public async Task UploadData(SODocs data, string username) { foreach (var i in data.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); } EntityExtension.FlagForCreate(data, username, USER_AGENT); dbSetSO.Add(data); var result = await dbContext.SaveChangesAsync(); }
public async Task <int> Delete(int id, string username) { SODocs model = ReadById(id); EntityExtension.FlagForDelete(model, username, USER_AGENT, true); foreach (var i in model.Items) { EntityExtension.FlagForDelete(model, username, USER_AGENT, true); } dbSetSO.Update(model); return(await dbContext.SaveChangesAsync()); }
public IActionResult Get(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); SODocs model = facade.ReadById(id); SODocsViewModel viewModel = mapper.Map <SODocsViewModel>(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()); //////// // PurchaseRequestPDFTemplate PdfTemplate = new PurchaseRequestPDFTemplate(); //////// // MemoryStream stream = PdfTemplate.GeneratePdfTemplate(viewModel, clientTimeZoneOffset); //////// // return new FileStreamResult(stream, "application/pdf") //////// // { //////// // FileDownloadName = $"{viewModel.Code}.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 async Task <IActionResult> PostCSVFileAsync(string source) // public async Task<IActionResult> PostCSVFileAsync(double source, double destination, DateTime date) { try { identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; identityService.Token = Request.Headers["Authorization"].FirstOrDefault().Replace("Bearer ", ""); identityService.TimezoneOffset = Convert.ToInt32(Request.Headers["x-timezone-offset"]); if (Request.Form.Files.Count > 0) { //VerifyUser(); var UploadedFile = Request.Form.Files[0]; StreamReader Reader = new StreamReader(UploadedFile.OpenReadStream()); List <string> FileHeader = new List <string>(Reader.ReadLine().Split(",")); var ValidHeader = facade.CsvHeader.SequenceEqual(FileHeader, StringComparer.OrdinalIgnoreCase); if (ValidHeader) { Reader.DiscardBufferedData(); Reader.BaseStream.Seek(0, SeekOrigin.Begin); Reader.BaseStream.Position = 0; CsvReader Csv = new CsvReader(Reader); Csv.Configuration.IgnoreQuotes = false; Csv.Configuration.Delimiter = ","; Csv.Configuration.RegisterClassMap <Bateeq.Service.Warehouse.Lib.Facades.SOFacade.SOMap>(); Csv.Configuration.HeaderValidated = null; List <SODocsCsvViewModel> Data = Csv.GetRecords <SODocsCsvViewModel>().ToList(); SODocsViewModel Data1 = await facade.MapToViewModel(Data, source); Tuple <bool, List <object> > Validated = facade.UploadValidate(ref Data, Request.Form.ToList()); Reader.Close(); if (Validated.Item1) /* If Data Valid */ { SODocs data = mapper.Map <SODocs>(Data1); //foreach (var item in data) //{ // Transfrom(item); //} await facade.UploadData(data, identityService.Username); Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE) .Ok(); return(Created(HttpContext.Request.Path, Result)); } else { using (MemoryStream memoryStream = new MemoryStream()) { using (StreamWriter streamWriter = new StreamWriter(memoryStream)) using (CsvWriter csvWriter = new CsvWriter(streamWriter)) { csvWriter.WriteRecords(Validated.Item2); } return(File(memoryStream.ToArray(), ContentType, FileName)); } } } else { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, General.CSV_ERROR_MESSAGE) .Fail(); return(NotFound(Result)); } } else { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.NO_FILE_ERROR_MESSAGE) .Fail(); return(BadRequest(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 async Task <int> Process(SODocs viewModel, string username, int clientTimeZoneOffset = 7) { int Process = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var model = dbContext.StockOpnameDocs.Where(x => x.Id == viewModel.Id).FirstOrDefault(); model.IsProcessed = true; string inventoryMovementIn = GenerateCode("EFR-TB/SO"); string inventoryMovementOut = GenerateCode("EFR-KB/SO"); List <TransferInDocItem> transferInDocsItems = new List <TransferInDocItem>(); List <InventoryMovement> inventoryMovements = new List <InventoryMovement>(); List <TransferOutDocItem> transferOutDocsItems = new List <TransferOutDocItem>(); EntityExtension.FlagForUpdate(model, username, USER_AGENT); foreach (var i in viewModel.Items) { var inventoriesAvailable = dbContext.Inventories.Where(x => x.ItemId == i.ItemId && x.StorageId == viewModel.StorageId).FirstOrDefault(); var sourceQty = inventoriesAvailable.Quantity; if (i.IsAdjusted == true) { var items = dbContext.StockOpnameDocsItems.Where(x => x.Id == i.Id && x.SODocsId == viewModel.Id).FirstOrDefault(); items.IsAdjusted = true; EntityExtension.FlagForUpdate(items, username, USER_AGENT); if (i.QtyBeforeSO < i.QtySO) { transferInDocsItems.Add(new TransferInDocItem { ArticleRealizationOrder = i.ItemArticleRealizationOrder, DomesticCOGS = i.ItemDomesticCOGS, DomesticRetail = i.ItemDomesticRetail, DomesticSale = i.ItemDomesticSale, DomesticWholeSale = i.ItemDomesticWholeSale, ItemCode = i.ItemCode, ItemId = i.ItemId, ItemName = i.ItemName, Quantity = i.QtySO - i.QtyBeforeSO, Remark = i.Remark, Size = i.ItemSize, Uom = i.ItemUom }); inventoryMovements.Add(new InventoryMovement { Before = sourceQty, After = sourceQty + (i.QtySO - i.QtyBeforeSO), Date = DateTimeOffset.Now, ItemArticleRealizationOrder = i.ItemArticleRealizationOrder, ItemCode = i.ItemCode, ItemDomesticCOGS = i.ItemDomesticCOGS, ItemDomesticRetail = i.ItemDomesticRetail, ItemDomesticWholeSale = i.ItemDomesticRetail, ItemDomesticSale = i.ItemDomesticSale, ItemId = i.ItemId, ItemInternationalCOGS = i.ItemInternationalCOGS, ItemInternationalRetail = i.ItemInternationalRetail, ItemInternationalSale = i.ItemInternationalSale, ItemInternationalWholeSale = i.ItemInternationalWholeSale, ItemName = i.ItemName, ItemSize = i.ItemSize, ItemUom = i.ItemUom, Quantity = i.QtySO - i.QtyBeforeSO, StorageCode = viewModel.StorageCode, StorageId = viewModel.StorageId, StorageName = viewModel.StorageName, Type = "IN", Reference = inventoryMovementIn, Remark = i.Remark, StorageIsCentral = viewModel.StorageName.Contains("GUDANG") ? true : false, }); inventoriesAvailable.Quantity += (i.QtySO - i.QtyBeforeSO); EntityExtension.FlagForUpdate(inventoriesAvailable, username, USER_AGENT); EntityExtension.FlagForCreate(i, username, USER_AGENT); } else { transferOutDocsItems.Add(new TransferOutDocItem { ArticleRealizationOrder = i.ItemArticleRealizationOrder, DomesticCOGS = i.ItemDomesticCOGS, DomesticRetail = i.ItemDomesticRetail, DomesticSale = i.ItemDomesticSale, DomesticWholeSale = i.ItemDomesticWholeSale, ItemCode = i.ItemCode, ItemId = i.ItemId, ItemName = i.ItemName, Quantity = i.QtyBeforeSO - i.QtySO, Remark = i.Remark, Size = i.ItemSize, Uom = i.ItemUom }); inventoryMovements.Add(new InventoryMovement { Before = sourceQty, After = sourceQty - (i.QtyBeforeSO - i.QtySO), Date = DateTimeOffset.Now, ItemArticleRealizationOrder = i.ItemArticleRealizationOrder, ItemCode = i.ItemCode, ItemDomesticCOGS = i.ItemDomesticCOGS, ItemDomesticRetail = i.ItemDomesticRetail, ItemDomesticWholeSale = i.ItemDomesticRetail, ItemDomesticSale = i.ItemDomesticSale, ItemId = i.ItemId, ItemInternationalCOGS = i.ItemInternationalCOGS, ItemInternationalRetail = i.ItemInternationalRetail, ItemInternationalSale = i.ItemInternationalSale, ItemInternationalWholeSale = i.ItemInternationalWholeSale, ItemName = i.ItemName, ItemSize = i.ItemSize, ItemUom = i.ItemUom, Quantity = i.QtyBeforeSO - i.QtySO, StorageCode = viewModel.StorageCode, StorageId = viewModel.StorageId, StorageName = viewModel.StorageName, Type = "OUT", Reference = inventoryMovementOut, Remark = i.Remark, StorageIsCentral = viewModel.StorageName.Contains("GUDANG") ? true : false, }); inventoriesAvailable.Quantity -= (i.QtyBeforeSO - i.QtySO); EntityExtension.FlagForUpdate(inventoriesAvailable, username, USER_AGENT); EntityExtension.FlagForCreate(i, username, USER_AGENT); } } } if (transferInDocsItems.Count > 0) { TransferInDoc transferInDoc = new TransferInDoc { Code = inventoryMovementIn, Date = DateTimeOffset.Now, DestinationId = viewModel.StorageId, DestinationCode = viewModel.StorageCode, DestinationName = viewModel.StorageName, SourceId = viewModel.StorageId, SourceCode = viewModel.StorageCode, SourceName = viewModel.StorageName, Reference = viewModel.Code, Remark = "", Items = transferInDocsItems }; EntityExtension.FlagForCreate(transferInDoc, username, USER_AGENT); foreach (var tii in transferInDoc.Items) { EntityExtension.FlagForCreate(tii, username, USER_AGENT); } dbSetTransferIn.Add(transferInDoc); } if (transferOutDocsItems.Count > 0) { TransferOutDoc transferOutDoc = new TransferOutDoc { Code = inventoryMovementOut, Date = DateTimeOffset.Now, DestinationId = viewModel.StorageId, DestinationCode = viewModel.StorageCode, DestinationName = viewModel.StorageName, SourceId = viewModel.StorageId, SourceCode = viewModel.StorageCode, SourceName = viewModel.StorageName, Reference = viewModel.Code, Remark = "", Items = transferOutDocsItems }; EntityExtension.FlagForCreate(transferOutDoc, username, USER_AGENT); foreach (var toi in transferOutDoc.Items) { EntityExtension.FlagForCreate(toi, username, USER_AGENT); } dbSetTransferOut.Add(transferOutDoc); } foreach (var im in inventoryMovements) { EntityExtension.FlagForCreate(im, username, USER_AGENT); dbSetInventoryMovement.Add(im); } Process = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } return(Process); } }