public IActionResult Get(int id) { try { var model = facade.ReadById(id); var viewModel = mapper.Map<GarmentInternNoteViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } else { viewModel.isEdit = model.Position <= PurchasingGarmentExpeditionPosition.Purchasing; foreach (GarmentInternNoteItemViewModel item in viewModel.items) { GarmentInvoice garmentInvoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); if (garmentInvoice != null) { GarmentInvoiceViewModel invoiceViewModel = mapper.Map<GarmentInvoiceViewModel>(garmentInvoice); item.garmentInvoice.items = invoiceViewModel.items; } foreach (GarmentInternNoteDetailViewModel detail in item.details) { GarmentDeliveryOrder deliveryOrder = deliveryOrderFacade.ReadById((int)detail.deliveryOrder.Id); if (deliveryOrder != null) { GarmentDeliveryOrderViewModel deliveryOrderViewModel = mapper.Map<GarmentDeliveryOrderViewModel>(deliveryOrder); detail.deliveryOrder.items = deliveryOrderViewModel.items; if (detail.invoiceDetailId != 0) { var invoiceItem = garmentInvoice.Items.First(s => s.Details.Any(d => d.Id == detail.invoiceDetailId)); var invoiceDetail = invoiceItem.Details.First(i => i.Id == detail.invoiceDetailId); if (invoiceDetail != null) { detail.dODetailId = invoiceDetail.DODetailId; } } } } } } Dictionary<string, object> Result = new ResultFormatter(ApiVersion, General.OK_STATUS_CODE, General.OK_MESSAGE) .Ok(viewModel); return Ok(Result); } catch (Exception e) { Dictionary<string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result); } }
public IActionResult GetIncomePDF(int id) { try { identityService.Token = Request.Headers["Authorization"].FirstOrDefault().Replace("Bearer ", ""); var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); GarmentInvoice model = facade.ReadById(id); GarmentInvoiceViewModel viewModel = mapper.Map <GarmentInvoiceViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } if (indexAcceptPdf < 0) { return(Ok(new { apiVersion = ApiVersion, statusCode = General.OK_STATUS_CODE, message = General.OK_MESSAGE, data = viewModel, })); } else { int clientTimeZoneOffset = int.Parse(Request.Headers["x-timezone-offset"].First()); /* tambahan */ /* get gsupplier */ string supplierUri = "master/garment-suppliers"; var httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = httpClient.GetAsync($"{Lib.Helpers.APIEndpoint.Core}{supplierUri}/{model.SupplierId}").Result.Content.ReadAsStringAsync(); Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(response.Result); SupplierViewModel supplier = JsonConvert.DeserializeObject <SupplierViewModel>(result.GetValueOrDefault("data").ToString()); /* tambahan */ IncomeTaxPDFTemplate PdfTemplateLocal = new IncomeTaxPDFTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, supplier, clientTimeZoneOffset, DOfacade); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.nph}.pdf" }); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public IActionResult GetInternNotePDF(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); GarmentInternNote model = facade.ReadById(id); GarmentInternNoteViewModel viewModel = mapper.Map <GarmentInternNoteViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } if (indexAcceptPdf < 0) { return(Ok(new { apiVersion = ApiVersion, statusCode = General.OK_STATUS_CODE, message = General.OK_MESSAGE, data = viewModel, })); } else { int clientTimeZoneOffset = int.Parse(Request.Headers["x-timezone-offset"].First()); foreach (var item in viewModel.items) { var garmentInvoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); var garmentInvoiceViewModel = mapper.Map <GarmentInvoiceViewModel>(garmentInvoice); item.garmentInvoice = garmentInvoiceViewModel; foreach (var detail in item.details) { var deliveryOrder = deliveryOrderFacade.ReadById((int)detail.deliveryOrder.Id); var deliveryOrderViewModel = mapper.Map <GarmentDeliveryOrderViewModel>(deliveryOrder); detail.deliveryOrder = deliveryOrderViewModel; } } GarmentInternNotePDFTemplate PdfTemplateLocal = new GarmentInternNotePDFTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, clientTimeZoneOffset, deliveryOrderFacade); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.inNo}.pdf" }); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public IActionResult GetIncomePDF(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); GarmentInvoice model = facade.ReadById(id); GarmentInvoiceViewModel viewModel = mapper.Map <GarmentInvoiceViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } if (indexAcceptPdf < 0) { return(Ok(new { apiVersion = ApiVersion, statusCode = General.OK_STATUS_CODE, message = General.OK_MESSAGE, data = viewModel, })); } else { int clientTimeZoneOffset = int.Parse(Request.Headers["x-timezone-offset"].First()); IncomeTaxPDFTemplate PdfTemplateLocal = new IncomeTaxPDFTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, clientTimeZoneOffset, DOfacade); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.nph}.pdf" }); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { IGarmentInvoice invoiceFacade = validationContext == null ? null : (IGarmentInvoice)validationContext.GetService(typeof(IGarmentInvoice)); IGarmentDeliveryOrderFacade doFacade = validationContext == null ? null : (IGarmentDeliveryOrderFacade)validationContext.GetService(typeof(IGarmentDeliveryOrderFacade)); if (currency == null) { yield return(new ValidationResult("currency is required", new List <string> { "currency" })); } if (supplier == null) { yield return(new ValidationResult("Supplier is required", new List <string> { "supplier" })); } int itemErrorCount = 0; int detailErrorCount = 0; if (this.items == null || items.Count <= 0) { yield return(new ValidationResult("Item is required", new List <string> { "itemscount" })); } else { //Enhance Jason Sept 2021 List <string> arrNo = new List <string>(); foreach (var detailItem in items) { if (detailItem.garmentInvoice != null) { arrNo.Add(detailItem.garmentInvoice.invoiceNo); } } string itemError = "["; bool? prevUseIncomeTax = null; bool? prevUseVat = null; string paymentMethod = ""; long? IncomeTaxId = null; foreach (var item in items) { itemError += "{"; if (item.garmentInvoice == null || item.garmentInvoice.Id == 0) { itemErrorCount++; itemError += "garmentInvoice: 'No Garment Invoice selected', "; } else { //Enhance Jason Sept 2019 : Invoice No Validation //Check Duplicate Invoice No for 1 Invoice //if (arrNo.FindAll(e => e == item.garmentInvoice.invoiceNo).Count > 1) //{ // itemErrorCount++; // itemError += "garmentInvoice: 'there is duplication of invoiceNo " + item.garmentInvoice.invoiceNo + "', "; //} if (items.ToList().Where(x => x.garmentInvoice.invoiceNo == item.garmentInvoice.invoiceNo && x.garmentInvoice.invoiceDate == item.garmentInvoice.invoiceDate).Count() > 1) { itemErrorCount++; itemError += "garmentInvoice: 'there is duplication of invoiceNo " + item.garmentInvoice.invoiceNo + "', "; } //Check if Invoice No for Specific Supplier is Existed PurchasingDbContext purchasingDbContext = (PurchasingDbContext)validationContext.GetService(typeof(PurchasingDbContext)); var detailData = purchasingDbContext.GarmentInternNoteItems.Where(w => w.InvoiceId == item.garmentInvoice.Id && w.InvoiceDate == item.garmentInvoice.invoiceDate && w.IsDeleted == false).Select(s => new { s.Id, s.GarmentINId, s.InvoiceId, s.InvoiceNo }); if (detailData.ToList().Count > 0) { foreach (var itemDetail in detailData) { var headerData = purchasingDbContext.GarmentInternNotes.Where(w => w.Id == itemDetail.GarmentINId && w.SupplierId == supplier.Id && w.IsDeleted == false).Select(s => new { s.INNo }); if (headerData.ToList().Count > 0) { foreach (var itemHeader in headerData) { itemErrorCount++; itemError += "garmentInvoice: 'invoiceNo " + item.garmentInvoice.invoiceNo + " already existed on Intern Note No " + itemHeader.INNo.ToString() + "', "; } } } } var invoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); if (prevUseIncomeTax != null && prevUseIncomeTax != invoice.UseIncomeTax) { itemErrorCount++; itemError += "useincometax: 'UseIncomeTax harus sama', "; } prevUseIncomeTax = invoice.UseIncomeTax; if (prevUseVat != null && prevUseVat != invoice.UseVat) { itemErrorCount++; itemError += "usevat: 'UseVat harus sama', "; } prevUseVat = invoice.UseVat; if (IncomeTaxId != null && IncomeTaxId != invoice.IncomeTaxId) { itemErrorCount++; itemError += "incometax: 'Income Tax Harus Sama', "; } IncomeTaxId = invoice.IncomeTaxId; if (item.details == null || item.details.Count.Equals(0)) { itemErrorCount++; itemError += "detailscount: 'Details is required', "; } else { string detailError = "["; foreach (var detail in item.details) { detailError += "{"; var deliveryOrder = doFacade.ReadById((int)detail.deliveryOrder.Id); var invitem = invoice.Items.First(s => s.InvoiceId == item.garmentInvoice.Id); if (invitem != null) { if (paymentMethod != "" && paymentMethod != invitem.PaymentMethod) { detailErrorCount++; detailError += "paymentMethod: 'TermOfPayment Harus Sama', "; } paymentMethod = deliveryOrder.PaymentMethod; } detailError += "}, "; } detailError += "]"; if (detailErrorCount > 0) { itemErrorCount++; itemError += $"details: {detailError}, "; } } } itemError += "}, "; } itemError += "]"; if (itemErrorCount > 0) { yield return(new ValidationResult(itemError, new List <string> { "items" })); } } }
public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { IGarmentInvoice invoiceFacade = validationContext == null ? null : (IGarmentInvoice)validationContext.GetService(typeof(IGarmentInvoice)); IGarmentDeliveryOrderFacade doFacade = validationContext == null ? null : (IGarmentDeliveryOrderFacade)validationContext.GetService(typeof(IGarmentDeliveryOrderFacade)); if (currency == null) { yield return(new ValidationResult("currency is required", new List <string> { "currency" })); } if (supplier == null) { yield return(new ValidationResult("Supplier is required", new List <string> { "supplier" })); } int itemErrorCount = 0; int detailErrorCount = 0; if (this.items == null || items.Count <= 0) { yield return(new ValidationResult("Item is required", new List <string> { "itemscount" })); } else { string itemError = "["; bool? prevUseIncomeTax = null; bool? prevUseVat = null; string paymentMethod = ""; foreach (var item in items) { itemError += "{"; if (item.garmentInvoice == null || item.garmentInvoice.Id == 0) { itemErrorCount++; itemError += "garmentInvoice: 'No Garment Invoice selected', "; } else { var invoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); if (prevUseIncomeTax != null && prevUseIncomeTax != invoice.UseIncomeTax) { itemErrorCount++; itemError += "useincometax: 'UseIncomeTax harus sama', "; } prevUseIncomeTax = invoice.UseIncomeTax; if (prevUseVat != null && prevUseVat != invoice.UseVat) { itemErrorCount++; itemError += "usevat: 'UseVat harus sama', "; } prevUseVat = invoice.UseVat; if (item.details == null || item.details.Count.Equals(0)) { itemErrorCount++; itemError += "detailscount: 'Details is required', "; } else { string detailError = "["; foreach (var detail in item.details) { detailError += "{"; var deliveryOrder = doFacade.ReadById((int)detail.deliveryOrder.Id); if (deliveryOrder != null) { if (paymentMethod != "" && paymentMethod != deliveryOrder.PaymentMethod) { detailErrorCount++; detailError += "paymentMethod: 'TermOfPayment Harus Sama', "; } paymentMethod = deliveryOrder.PaymentMethod; } detailError += "}, "; } detailError += "]"; if (detailErrorCount > 0) { itemErrorCount++; itemError += $"details: {detailError}, "; } } } itemError += "}, "; } itemError += "]"; if (itemErrorCount > 0) { yield return(new ValidationResult(itemError, new List <string> { "items" })); } } }
public IActionResult Get(int page = 1, int size = 25, string order = "{}", string keyword = null, string filter = "{}") { try { identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; var Data = facade.Read(page, size, order, keyword, filter); var viewModel = mapper.Map <List <GarmentInternNoteViewModel> >(Data.Item1); foreach (var d in viewModel) { foreach (var item in d.items) { GarmentInvoice garmentInvoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); if (garmentInvoice != null) { GarmentInvoiceViewModel invoiceViewModel = mapper.Map <GarmentInvoiceViewModel>(garmentInvoice); item.garmentInvoice.items = invoiceViewModel.items; } foreach (var detail in item.details) { var deliveryOrder = deliveryOrderFacade.ReadById((int)detail.deliveryOrder.Id); if (deliveryOrder != null) { var deliveryOrderViewModel = mapper.Map <GarmentDeliveryOrderViewModel>(deliveryOrder); detail.deliveryOrder.items = deliveryOrderViewModel.items; } } } } List <object> listData = new List <object>(); listData.AddRange( viewModel.AsQueryable().Select(s => new { s.Id, s.inNo, s.inDate, supplier = new { s.supplier.Name }, items = s.items.Select(i => new { i.garmentInvoice, details = i.details.Select(d => new { d.deliveryOrder }).ToList(), }).ToList(), s.CreatedBy, s.LastModifiedUtc }).ToList() ); var info = new Dictionary <string, object> { { "count", listData.Count }, { "total", Data.Item2 }, { "order", Data.Item3 }, { "page", page }, { "size", size } }; Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.OK_STATUS_CODE, General.OK_MESSAGE) .Ok(listData, info); return(Ok(Result)); } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }