public async Task <IActionResult> Post([FromBody] ProjectCodeMaster nProjectCodeMaster) { if (nProjectCodeMaster != null) { // add hour to DateTime to set Asia/Bangkok nProjectCodeMaster = helpers.AddHourMethod(nProjectCodeMaster); nProjectCodeMaster.CreateDate = DateTime.Now; nProjectCodeMaster.Creator = nProjectCodeMaster.Creator ?? "Someone"; if (nProjectCodeMaster.ProjectCodeDetails != null) { foreach (var nDetail in nProjectCodeMaster.ProjectCodeDetails) { nDetail.CreateDate = nProjectCodeMaster.CreateDate; nDetail.Creator = nProjectCodeMaster.Creator; } } return(new JsonResult(await this.repository.AddAsync(nProjectCodeMaster), this.DefaultJsonSettings)); } return(NotFound(new { Error = "ProjectMaster 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] ProjectCodeMaster uProjectCodeMaster) { if (uProjectCodeMaster != null) { // add hour to DateTime to set Asia/Bangkok uProjectCodeMaster = helpers.AddHourMethod(uProjectCodeMaster); // set modified uProjectCodeMaster.ModifyDate = DateTime.Now; uProjectCodeMaster.Modifyer = uProjectCodeMaster.Modifyer ?? "Someone"; if (uProjectCodeMaster.ProjectCodeDetails != null) { foreach (var detail in uProjectCodeMaster.ProjectCodeDetails) { if (detail.ProjectCodeDetailId > 0) { detail.ModifyDate = uProjectCodeMaster.ModifyDate; detail.Modifyer = uProjectCodeMaster.Modifyer; } else { detail.CreateDate = uProjectCodeMaster.ModifyDate; detail.Creator = uProjectCodeMaster.Modifyer; } } } // update Master not update Detail it need to update Detail directly var updateComplate = await this.repository.UpdateAsync(uProjectCodeMaster, key); if (updateComplate != null) { // filter Expression <Func <ProjectCodeDetail, bool> > condition = m => m.ProjectCodeMasterId == key; var dbDetails = this.repositoryDetail.FindAll(condition); //Remove ProjectCodeDetails if edit remove it foreach (var dbDetail in dbDetails) { var Message = ""; try { if (!uProjectCodeMaster.ProjectCodeDetails.Any(x => x.ProjectCodeDetailId == dbDetail.ProjectCodeDetailId)) { await this.repositoryDetail.DeleteAsync(dbDetail.ProjectCodeDetailId); } } catch (Exception ex) { Message = ex.ToString(); } } //Update ProjectCodeDetails foreach (var uDetail in uProjectCodeMaster.ProjectCodeDetails) { if (uDetail.ProjectCodeDetailId > 0) { await this.repositoryDetail.UpdateAsync(uDetail, uDetail.ProjectCodeDetailId); } else { if (uDetail.ProjectCodeMasterId < 1) { uDetail.ProjectCodeMasterId = uProjectCodeMaster.ProjectCodeMasterId; } await this.repositoryDetail.AddAsync(uDetail); } } } return(new JsonResult(updateComplate, this.DefaultJsonSettings)); } return(NotFound(new { Error = "ProjectMaster not found. " })); }