You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
9.7 KiB
TypeScript
316 lines
9.7 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
|
import { FileUploader } from 'ng2-file-upload';
|
|
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service';
|
|
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
|
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
|
import { ItemForSaleService } from '../services/service.service';
|
|
|
|
@Component({
|
|
selector: 'app-home',
|
|
templateUrl: './home.component.html',
|
|
styleUrls: ['./home.component.scss'],
|
|
})
|
|
export class HomeComponent implements OnInit {
|
|
step: any = 1;
|
|
categories: any = [];
|
|
direction: string;
|
|
uploaded: any = [];
|
|
public selectedFile: any;
|
|
indexLastObj: any = 0;
|
|
addAttachRequest: any = [];
|
|
selectedPicture = [];
|
|
selectedCategory: any;
|
|
filterAllowedType: any = [
|
|
"image/jpeg",
|
|
"image/png",
|
|
"image/jpg",
|
|
];
|
|
itemInfo: string;
|
|
itemDescription: string;
|
|
itemCondition: string;
|
|
itemPrice: any;
|
|
regions: any = [];
|
|
regionID: any = 1;
|
|
editItem: any;
|
|
constructor(public ts: TranslatorService, private authService: AuthenticationService, private sanitizer: DomSanitizer, public cs: CommonService, private itemService: ItemForSaleService) { }
|
|
|
|
ngOnInit() {
|
|
this.direction = TranslatorService.getCurrentDirection();
|
|
this.categories = this.cs.sharedService.getSharedData(ItemForSaleService.CATEGORIES, false);
|
|
this.categories.shift();
|
|
this.getRegion();
|
|
this.editItem = this.cs.sharedService.getSharedData(ItemForSaleService.EDIT_ITEMS);
|
|
if (this.editItem) {
|
|
this.setEditPage();
|
|
}
|
|
}
|
|
getRegion() {
|
|
this.itemService.getRegion({}, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.regions = this.itemService.parser(result);
|
|
console.log(this.regions);
|
|
})
|
|
}
|
|
openItem() {
|
|
this.cs.navigateForward('/itemforsale/items');
|
|
}
|
|
nextStep(category) {
|
|
this.selectedCategory = category;
|
|
this.step = 2;
|
|
}
|
|
openMyAds() {
|
|
this.cs.navigateForward('/itemforsale/my-ads');
|
|
}
|
|
|
|
onFileSelectedclick(event) {
|
|
event.target.value = '';
|
|
}
|
|
public uploader: FileUploader = new FileUploader({
|
|
allowedMimeType: [
|
|
"image/jpeg",
|
|
"image/png",
|
|
"image/jpg",
|
|
],
|
|
maxFileSize: 10 * 1024 * 1024,
|
|
formatDataFunctionIsAsync: true,
|
|
formatDataFunction: async item => {
|
|
return new Promise((resolve, reject) => {
|
|
resolve({
|
|
name: item._file.name,
|
|
length: item._file.size,
|
|
contentType: item._file.type,
|
|
date: new Date()
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
// onFileSelected(input) {
|
|
// if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
|
|
// let msg: string = "";
|
|
// msg = this.ts.trPK("general", "notSupportFile");
|
|
// this.cs.presentAlert(msg);
|
|
// return;
|
|
// } // todo: show alert that you tried uploading wrong files
|
|
// else {
|
|
// const file = input.target.files[0];
|
|
// this.selectedFile = input.target.files;
|
|
|
|
|
|
// this.getBase64(file).then(data =>
|
|
// this.pushObject(data, file.name, file.type)
|
|
// );
|
|
// }
|
|
// }
|
|
|
|
// getBase64(file) {
|
|
// return new Promise((resolve, reject) => {
|
|
// const reader = new FileReader();
|
|
// reader.readAsDataURL(file);
|
|
// reader.onload = () => resolve(reader.result);
|
|
// reader.onerror = error => reject(error);
|
|
// });
|
|
// }
|
|
|
|
// pushObject(fileData, name, type) {
|
|
|
|
// this.indexLastObj++;
|
|
// try {
|
|
// let array = name.split(".");
|
|
// let attachType: string = array[array.length - 1];
|
|
|
|
// this.addAttachRequest.push({
|
|
// AttachmentID: this.indexLastObj,
|
|
// ContentType: 'image/' + attachType, //type.split('/')[1],
|
|
// Base64Data: fileData.split(",")[1],
|
|
// FileName: name, //.split('.')[0],
|
|
|
|
// });
|
|
// } catch (e) { }
|
|
// }
|
|
|
|
removeFile(objectitem) {
|
|
|
|
let objIndex = this.addAttachRequest.findIndex(
|
|
item => item.AttachmentID == objectitem.AttachmentID
|
|
);
|
|
this.addAttachRequest.splice(objIndex, 1);
|
|
}
|
|
getImgContent(imgFile): SafeUrl {
|
|
|
|
return this.sanitizer.bypassSecurityTrustUrl(imgFile);
|
|
}
|
|
|
|
createItemForSale() {
|
|
|
|
var authUser = this.authService.getAuthenticatedRequest();
|
|
this.cs.startLoading();
|
|
// var request = new FormData();
|
|
// request.append('title', this.itemInfo);
|
|
// request.append('title_Ar', this.itemInfo);
|
|
// request.append('categoryID', this.selectedCategory.categoryID);
|
|
// request.append('description', this.itemDescription);
|
|
// request.append('description_Ar', this.itemDescription);
|
|
// request.append('employeeNumber', authUser.P_USER_NAME);
|
|
// request.append('quotePrice', this.itemPrice);
|
|
// request.append('isActive', 'true');
|
|
// request.append('regionID', this.regionID);
|
|
// request.append('status', this.itemCondition);
|
|
// console.log(this.selectedFile);
|
|
// if (this.selectedFile && this.selectedFile !== undefined) {
|
|
// request.append('fileColl', this.addAttachRequest.toString());
|
|
// }
|
|
// request.append('Channel', authUser.Channel.toString());
|
|
// request.append('LogInToken', authUser.LogInTokenID);
|
|
// request.append('Token', authUser.TokenID);
|
|
// request.append('EmployeeNumber', authUser.P_USER_NAME);
|
|
// request.append('MobileNo', authUser.MobileNumber);
|
|
var request = {
|
|
"TokenID": authUser.LogInTokenID, "EmployeeNumber": authUser.P_USER_NAME, "ItgImageCollList": this.addAttachRequest,
|
|
"ItgTitle": this.itemInfo,
|
|
"ItgTitleAr": this.itemInfo,
|
|
"ItgCategoryID": this.selectedCategory.categoryID,
|
|
"ItgDescription": this.itemDescription,
|
|
"ItgDescriptionAr": this.itemDescription,
|
|
"ItgQuotePrice": this.itemPrice,
|
|
"RegionID": this.regionID,
|
|
"ItgIsActive": true,
|
|
"ItgStatus": this.itemCondition
|
|
}
|
|
|
|
this.itemService.createItemForSale(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result: any) => {
|
|
if (this.cs.validResponse(result)) {
|
|
this.cs.stopLoading();
|
|
|
|
this.cs.greenToastPK("general", "success-create");
|
|
this.openItem();
|
|
} else {
|
|
this.cs.stopLoading();
|
|
this.cs.redToastPK("general", "try-again");
|
|
}
|
|
|
|
|
|
})
|
|
}
|
|
setEditPage() {
|
|
this.step = 2;
|
|
this.selectedCategory = {
|
|
categoryID: this.editItem.categoryID,
|
|
title: this.editItem.categoryTitle,
|
|
title_Ar: this.editItem.categoryTitle
|
|
}
|
|
this.itemInfo = this.editItem.title;
|
|
this.itemDescription = this.editItem.description;
|
|
this.itemPrice = this.editItem.quotePrice;
|
|
this.regionID = this.editItem.regionID;
|
|
this.itemCondition = this.editItem.status.toLowerCase();
|
|
this.selectedPicture = this.getAttachment(this.editItem.itemAttachments);
|
|
}
|
|
getAttachment(itemsArray) {
|
|
let item = [];
|
|
itemsArray.forEach(element => {
|
|
|
|
item.push({
|
|
// attachmentId: element.attachmentId,
|
|
// ContentType: element.contentType,
|
|
data: 'data:image/png;base64,' + element.content,
|
|
name: element.fileName,
|
|
|
|
});
|
|
});
|
|
return item;
|
|
}
|
|
updateItemForSale() {
|
|
|
|
var authUser = this.authService.getAuthenticatedRequest();
|
|
this.cs.startLoading();
|
|
var request = new FormData();
|
|
request.append('itemSaleID', this.editItem.itemSaleID);
|
|
request.append('title', this.itemInfo);
|
|
request.append('title_Ar', this.itemInfo);
|
|
request.append('categoryID', this.selectedCategory.categoryID);
|
|
request.append('description', this.itemDescription);
|
|
request.append('description_Ar', this.itemDescription);
|
|
request.append('employeeNumber', authUser.P_USER_NAME);
|
|
request.append('quotePrice', this.itemPrice);
|
|
request.append('isActive', 'true');
|
|
request.append('regionID', this.regionID);
|
|
request.append('status', this.itemCondition);
|
|
// console.log(this.selectedFile);
|
|
// if (this.selectedFile && this.selectedFile !== undefined) {
|
|
// request.append('fileColl', this.selectedFile[0], this.selectedFile[0].name);
|
|
// }
|
|
request.append('Channel', authUser.Channel.toString());
|
|
request.append('LogInToken', authUser.LogInTokenID);
|
|
request.append('Token', authUser.TokenID);
|
|
request.append('EmployeeNumber', authUser.P_USER_NAME);
|
|
request.append('MobileNo', authUser.MobileNumber);
|
|
|
|
|
|
this.itemService.updateItemForSale(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result: any) => {
|
|
if (this.cs.validResponse(result)) {
|
|
this.cs.stopLoading();
|
|
|
|
this.cs.greenToastPK("general", "success-create");
|
|
this.openItem();
|
|
} else {
|
|
this.cs.stopLoading();
|
|
this.cs.redToastPK("general", "try-again");
|
|
}
|
|
|
|
|
|
})
|
|
}
|
|
cancelItem() {
|
|
if (this.step == 2 || this.step == 3) {
|
|
this.step = 1;
|
|
} else {
|
|
this.cs.back();
|
|
}
|
|
|
|
}
|
|
validate() {
|
|
if (!this.validateChar(this.itemInfo) || !this.itemDescription || !this.itemPrice || !this.itemCondition) {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
validateChar(text) {
|
|
var regExp = /^[a-zA-Z]*$/
|
|
if ((!regExp.test(text) && !this.hasArabicCharacters(text)) || !text) {
|
|
return false;
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
}
|
|
hasArabicCharacters(text) {
|
|
var regex = new RegExp("[\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufc3f]|[\ufe70-\ufefc]");
|
|
return regex.test(text);
|
|
}
|
|
public attachmentSelected(event: any) {
|
|
try {
|
|
this.addAttachRequest = event.inputFiles.map((res: any) => {
|
|
let array = res.name.split(".");
|
|
let attachType: string = array[array.length - 1];
|
|
this.indexLastObj++;
|
|
return { AttachmentID: this.indexLastObj, FileName: res.name, Base64Data: res.data.split(",")[1], ContentType: 'image/' + attachType };
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (e) { }
|
|
}
|
|
}
|