diff --git a/.gitignore b/.gitignore index 9eb5cb02..6d829c31 100644 --- a/.gitignore +++ b/.gitignore @@ -368,3 +368,4 @@ FodyWeavers.xsd src/server/.idea/.idea.FluentPOS/.idea/ .DS_Store +src/server/API/Files/** diff --git a/src/client/src/app/modules/admin/catalog/components/product/product-form/product-form.component.ts b/src/client/src/app/modules/admin/catalog/components/product/product-form/product-form.component.ts index bc7b7a1a..f1fc8565 100644 --- a/src/client/src/app/modules/admin/catalog/components/product/product-form/product-form.component.ts +++ b/src/client/src/app/modules/admin/catalog/components/product/product-form/product-form.component.ts @@ -92,17 +92,14 @@ export class ProductFormComponent implements OnInit { onSubmit() { // TODO after successful update/insert, refresh table view in component product.component.ts - console.log(this.url); - // var upload = new Upload(); - // upload.data = this.url; - // upload.name = this.url. + if (this.productForm.valid) { if (this.productForm.get('id').value === '' || this.productForm.get('id').value == null) { - this.productService.createProduct(this.productForm.value).subscribe(response => { + this.productService.createProduct(this.productForm.value, this.upload).subscribe(response => { this.toastr.success(response.messages[0]); }); } else { - this.productService.updateProduct(this.productForm.value).subscribe(response => { + this.productService.updateProduct(this.productForm.value, this.upload).subscribe(response => { this.toastr.success(response.messages[0]); }); } diff --git a/src/client/src/app/modules/admin/catalog/models/product.ts b/src/client/src/app/modules/admin/catalog/models/product.ts index dfee67d4..c31867dc 100644 --- a/src/client/src/app/modules/admin/catalog/models/product.ts +++ b/src/client/src/app/modules/admin/catalog/models/product.ts @@ -17,5 +17,5 @@ export interface Product { isAlert?: boolean; alertQuantity: number; detail: string; - upload?: Upload; + uploadRequest?: Upload; } diff --git a/src/client/src/app/modules/admin/catalog/services/product.service.ts b/src/client/src/app/modules/admin/catalog/services/product.service.ts index 9bbd64fa..adabef50 100644 --- a/src/client/src/app/modules/admin/catalog/services/product.service.ts +++ b/src/client/src/app/modules/admin/catalog/services/product.service.ts @@ -3,6 +3,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { ProductApiService } from 'src/app/core/api/catalog/product-api.service'; +import { Upload } from 'src/app/core/models/uploads/upload'; import { IResult } from 'src/app/core/models/wrappers/IResult'; import { PaginatedResult } from 'src/app/core/models/wrappers/PaginatedResult'; import { Result } from 'src/app/core/models/wrappers/Result'; @@ -38,13 +39,16 @@ export class ProductService { return this.api.getById(id).pipe(map((response: Result) => response)); } - createProduct(product: Product): Observable> { + createProduct(product: Product, upload: Upload): Observable> { + if (upload != undefined && upload.data != undefined) product.uploadRequest = upload; return this.api .create(product) .pipe(map((response: IResult) => response)); } - updateProduct(product: Product): Observable> { + updateProduct(product: Product, upload: Upload): Observable> { + console.log(upload); + if (upload != undefined && upload.data != undefined) product.uploadRequest = upload; return this.api .update(product) .pipe(map((response: IResult) => response)); diff --git a/src/server/Shared/Shared.DTOs/Upload/UploadRequest.cs b/src/server/Shared/Shared.DTOs/Upload/UploadRequest.cs index c9dae594..e8b0b403 100644 --- a/src/server/Shared/Shared.DTOs/Upload/UploadRequest.cs +++ b/src/server/Shared/Shared.DTOs/Upload/UploadRequest.cs @@ -16,6 +16,6 @@ public class UploadRequest public UploadType UploadType { get; set; } - public byte[] Data { get; set; } + public string Data { get; set; } } } \ No newline at end of file diff --git a/src/server/Shared/Shared.Infrastructure/Services/UploadService.cs b/src/server/Shared/Shared.Infrastructure/Services/UploadService.cs index 2fd6bb7e..fbb07d36 100644 --- a/src/server/Shared/Shared.Infrastructure/Services/UploadService.cs +++ b/src/server/Shared/Shared.Infrastructure/Services/UploadService.cs @@ -6,7 +6,9 @@ // // -------------------------------------------------------------------------------------------------- +using System; using System.IO; +using System.Text.RegularExpressions; using System.Threading.Tasks; using FluentPOS.Shared.Core.Interfaces.Services; using FluentPOS.Shared.DTOs.Upload; @@ -23,7 +25,9 @@ public Task UploadAsync(UploadRequest request) return Task.FromResult(string.Empty); } - var streamData = new MemoryStream(request.Data); + var base64Data = Regex.Match(request.Data, @"data:image/(?.+?),(?.+)").Groups["data"].Value; + + var streamData = new MemoryStream(Convert.FromBase64String(base64Data)); if (streamData.Length > 0) { string folder = request.UploadType.ToDescriptionString();