public async Task <IActionResult> PutByNumber(int key, [FromBody] CuttingPlan uCuttingPlan) { if (uCuttingPlan != null) { uCuttingPlan.ModifyDate = DateTime.Now; uCuttingPlan.Modifyer = uCuttingPlan.Modifyer ?? "Someone"; return(new JsonResult(await this.repository.UpdateAsync(uCuttingPlan, key), this.DefaultJsonSettings)); } return(NotFound(new { Error = "CuttingPlan not found. " })); }
public async Task <IActionResult> Post([FromBody] CuttingPlan nCuttingPlan) { if (nCuttingPlan != null) { nCuttingPlan.CreateDate = DateTime.Now; nCuttingPlan.Creator = nCuttingPlan.Creator ?? "Someone"; return(new JsonResult(await this.repository.AddAsync(nCuttingPlan), this.DefaultJsonSettings)); } return(NotFound(new { Error = "CuttingPlan not found. " })); }
public async Task <IActionResult> CuttingPlanImportData( [FromBody] IEnumerable <CuttingImportViewModel> ImportDatas, string UserName = "") { string Message = ""; try { if (ImportDatas != null) { var date = DateTime.Now; foreach (var Jobs in ImportDatas.GroupBy(x => x.JobNo.Trim())) { var PMaster = await this.repositoryProMaster.GetAllAsQueryable() .Where(x => x.ProjectCode.Trim().ToLower() .Equals(Jobs.Key.Trim().ToLower())) .Include(x => x.ProjectCodeDetails) .ThenInclude(z => z.CuttingPlans) .FirstOrDefaultAsync(); if (PMaster != null) { foreach (var JDetails in Jobs.GroupBy(x => x.Level23.Trim())) { var PDetail = PMaster.ProjectCodeDetails .FirstOrDefault(x => x.ProjectCodeDetailCode.Trim() .ToLower().Equals(JDetails.Key.Trim().ToLower())); if (PDetail != null) { foreach (var Import in JDetails.GroupBy(x => x.CuttingPlan.Trim() + x.MaterialSize.Trim())) { var Cutting = PDetail.CuttingPlans .FirstOrDefault(x => ((x.CuttingPlanNo != null ? x.CuttingPlanNo.ToLower() : "") + (x.MaterialSize != null ? x.MaterialSize.ToLower() : "")) .Equals(Import.Key.ToLower())); if (Cutting == null) { foreach (var import2 in Import) { double.TryParse(import2.Quantity, out double qty); // Insert CuttingPlan and Material var nCuttingPlan = new CuttingPlan() { ProjectCodeDetailId = PDetail.ProjectCodeDetailId, CreateDate = date, Creator = UserName, CuttingPlanNo = import2.CuttingPlan, Description = "Did not has description yet", Quantity = qty, TypeCuttingPlan = TypeCuttingPlan.CuttingPlan, MaterialSize = string.IsNullOrEmpty(import2.MaterialSize) ? "" : import2.MaterialSize.Trim(), MaterialGrade = string.IsNullOrEmpty(import2.MaterialGrade) ? "" : import2.MaterialGrade.Trim(), }; await this.repository.AddAsync(nCuttingPlan); } } } } // if don't have add all data in this level2/3 else { // Insert ProjectDetail var nProDetail = new ProjectCodeDetail() { CreateDate = date, Creator = UserName, Description = "Did not has description yet.", ProjectCodeDetailCode = JDetails.Key, ProjectCodeMasterId = PMaster.ProjectCodeMasterId, CuttingPlans = new List <CuttingPlan>() }; foreach (var Import in JDetails) { // Insert CuttingPlan and Material double.TryParse(Import.Quantity, out double qty); var nCuttingPlan = new CuttingPlan() { CreateDate = date, Creator = UserName, CuttingPlanNo = Import.CuttingPlan, Description = "Did not has description yet", Quantity = qty, TypeCuttingPlan = TypeCuttingPlan.CuttingPlan, MaterialSize = string.IsNullOrEmpty(Import.MaterialSize) ? "" : Import.MaterialSize.Trim(), MaterialGrade = string.IsNullOrEmpty(Import.MaterialGrade) ? "" : Import.MaterialGrade.Trim(), }; nProDetail.CuttingPlans.Add(nCuttingPlan); } // Insert ProjectDetail to DataBase await this.repositoryProDetail.AddAsync(nProDetail); } } } // if don't have add all data in this job else { // Insert ProjectMaster var nProMaster = new ProjectCodeMaster() { CreateDate = date, Creator = UserName, ProjectCode = Jobs.Key, ProjectName = "Did not has name yet.", StartDate = date, ProjectCodeDetails = new List <ProjectCodeDetail>() }; // Insert all ProjectDetail ,CuttingPlan and Material foreach (var JDetails in Jobs.GroupBy(x => x.Level23)) { // Insert ProjectDetail var nProDetail = new ProjectCodeDetail() { CreateDate = date, Creator = UserName, Description = "Did not has description yet.", ProjectCodeDetailCode = JDetails.Key, CuttingPlans = new List <CuttingPlan>() }; foreach (var Import in JDetails) { // Insert CuttingPlan and Material double.TryParse(Import.Quantity, out double qty); var nCuttingPlan = new CuttingPlan() { CreateDate = date, Creator = UserName, CuttingPlanNo = Import.CuttingPlan, Description = "Did not has description yet", Quantity = qty, TypeCuttingPlan = TypeCuttingPlan.CuttingPlan, MaterialSize = string.IsNullOrEmpty(Import.MaterialSize) ? "" : Import.MaterialSize.Trim(), MaterialGrade = string.IsNullOrEmpty(Import.MaterialGrade) ? "" : Import.MaterialGrade.Trim(), }; nProDetail.CuttingPlans.Add(nCuttingPlan); } nProMaster.ProjectCodeDetails.Add(nProDetail); } // Insert ProjectMaster to DataBase await this.repositoryProMaster.AddAsync(nProMaster); } } // alway return true return(new JsonResult(true, this.DefaultJsonSettings)); } } catch (Exception ex) { Message = $"Has error {ex.ToString()}"; } return(NotFound(new { Message })); }
public async Task <IActionResult> PutByNumber(int key, [FromBody] JobCardMaster uJobCardMaster) { var Message = "ProjectMaster not found. "; try { if (uJobCardMaster != null) { // add hour to DateTime to set Asia/Bangkok uJobCardMaster = helpers.AddHourMethod(uJobCardMaster); uJobCardMaster.ModifyDate = DateTime.Now; uJobCardMaster.Modifyer = uJobCardMaster.Modifyer ?? "Someone"; if (uJobCardMaster.JobCardMasterStatus != JobCardMasterStatus.Complete) { uJobCardMaster.JobCardMasterStatus = uJobCardMaster.JobCardDetails.Any(x => x.JobCardDetailStatus == JobCardDetailStatus.Wait) ? JobCardMasterStatus.Wait : JobCardMasterStatus.InProcess; } if (uJobCardMaster.JobCardDetails != null) { foreach (var uDetail in uJobCardMaster.JobCardDetails) { if (uDetail.JobCardDetailId > 0) { uDetail.ModifyDate = uJobCardMaster.ModifyDate; uDetail.Modifyer = uJobCardMaster.Modifyer; } else { uDetail.CreateDate = uJobCardMaster.ModifyDate; uDetail.Creator = uJobCardMaster.Modifyer; uDetail.JobCardDetailStatus = JobCardDetailStatus.Wait; } // Insert UnitMeasure if (uDetail.UnitMeasureId < 1 && uDetail.UnitsMeasure != null) { var nUnitMeasure = new UnitsMeasure() { UnitMeasureId = uDetail.UnitsMeasure.UnitMeasureId, CreateDate = uDetail.UnitsMeasure.CreateDate, Creator = uDetail.UnitsMeasure.Creator, UnitMeasureName = uDetail.UnitsMeasure.UnitMeasureName, ModifyDate = uDetail.UnitsMeasure.ModifyDate, Modifyer = uDetail.UnitsMeasure.Modifyer }; if (nUnitMeasure != null) { nUnitMeasure.CreateDate = uJobCardMaster.ModifyDate; nUnitMeasure.Creator = uJobCardMaster.Modifyer; nUnitMeasure = await this.repositoryUom.AddAsync(nUnitMeasure); uDetail.UnitMeasureId = nUnitMeasure.UnitMeasureId; } } if (uDetail.CuttingPlanId < 1 && uDetail.CuttingPlan != null) { var nCuttingPlan = new CuttingPlan() { CreateDate = uDetail.CuttingPlan.CreateDate, Creator = uDetail.CuttingPlan.Creator, CuttingPlanId = uDetail.CuttingPlan.CuttingPlanId, CuttingPlanNo = uDetail.CuttingPlan.CuttingPlanNo, Description = uDetail.CuttingPlan.Description, MaterialGrade = uDetail.CuttingPlan.MaterialGrade, MaterialSize = uDetail.CuttingPlan.MaterialSize, ProjectCodeDetailId = uDetail.CuttingPlan.ProjectCodeDetailId, Quantity = uDetail.CuttingPlan.Quantity, TypeCuttingPlan = uDetail.CuttingPlan.TypeCuttingPlan }; if (nCuttingPlan != null) { nCuttingPlan.CreateDate = uJobCardMaster.ModifyDate; nCuttingPlan.Creator = uJobCardMaster.Modifyer; if (string.IsNullOrEmpty(nCuttingPlan.MaterialSize)) { nCuttingPlan.MaterialSize = uDetail.Material; } if (nCuttingPlan?.Quantity == null || nCuttingPlan?.Quantity < 1) { nCuttingPlan.Quantity = uDetail.Quality; } nCuttingPlan = await this.repositoryCut.AddAsync(nCuttingPlan); uDetail.CuttingPlanId = nCuttingPlan.CuttingPlanId; } } uDetail.CuttingPlan = null; uDetail.UnitsMeasure = null; } } // update Master not update Detail it need to update Detail directly var updateComplate = await this.repository.UpdateAsync(uJobCardMaster, key); if (updateComplate != null) { // filter Expression <Func <JobCardDetail, bool> > condition = m => m.JobCardMasterId == key; var dbDetails = this.repositoryDetail.FindAll(condition); //Remove Jo if edit remove it foreach (var dbDetail in dbDetails) { if (!uJobCardMaster.JobCardDetails.Any(x => x.JobCardDetailId == dbDetail.JobCardDetailId)) { await this.repositoryDetail.DeleteAsync(dbDetail.JobCardDetailId); } } //Update JobCardDetail or New JobCardDetail foreach (var uDetail in uJobCardMaster.JobCardDetails) { if (uDetail.JobCardDetailId > 0) { await this.repositoryDetail.UpdateAsync(uDetail, uDetail.JobCardDetailId); } else { if (uDetail.JobCardDetailId < 1) { uDetail.JobCardMasterId = uJobCardMaster.JobCardMasterId; } await this.repositoryDetail.AddAsync(uDetail); } } } return(new JsonResult(updateComplate, this.DefaultJsonSettings)); //return new JsonResult(await this.repository.UpdateAsync(uJobCardMaster, key), this.DefaultJsonSettings); } } catch (Exception ex) { Message = $"Has error {ex.ToString()}"; } return(NotFound(new { Error = Message })); }