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.
mohemm_moe/Mohem/src/app/itemforsale/home/home.component.ts

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) { }
}
}