public async Task ImportExcel(List <ScheduleDtoForImportExcel> scheduleDto) { try { var list = new List <ScheduleUpdateDto>(); var listExist = new List <object>(); var result = scheduleDto.DistinctBy(x => new { x.ModelName, x.ModelNo, x.ArticleNo, x.Process, x.Object, x.Part, x.ProductionDate }).Where(x => x.ModelName != "").ToList(); foreach (var item in result) { var Schedule = await AddSchedule(item); list.Add(Schedule); } var listAdd = new List <SchedulesUpdate>(); var listAdd2 = new List <ScheduleUpdateDto>(); var b = list.GroupBy(x => new { x.ModelName, x.ModelNo, x.ArticleNo, x.Treatment, x.Process, x.ProductionDate }).DistinctBy(x => x.Key); foreach (var x in b) { if (!await _repoScheduleUpdate.FindAll().AnyAsync(y => y.ModelName == x.Key.ModelName && y.ModelNo == x.Key.ModelNo && y.ArticleNo == x.Key.ArticleNo && y.Treatment == x.Key.Treatment && y.Process == x.Key.Process)) { // add schedule var schedules = new SchedulesUpdate(); schedules.ModelName = x.Key.ModelName; schedules.ModelNo = x.Key.ModelNo; schedules.ArticleNo = x.Key.ArticleNo; schedules.Treatment = x.Key.Treatment; schedules.Process = x.Key.Process; // schedules.a = x.Key.ArtProcessID; schedules.CreatedBy = x.FirstOrDefault().CreatedBy; schedules.ApprovalBy = x.FirstOrDefault().ApprovalBy; if (x.FirstOrDefault().ProcessID == 1) { schedules.ProductionDate = x.FirstOrDefault().ProductionDate; schedules.EstablishDate = x.FirstOrDefault().ProductionDate.AddDays(-30); } else { schedules.ProductionDate = x.FirstOrDefault().ProductionDate; schedules.EstablishDate = x.FirstOrDefault().ProductionDate.AddDays(-15); } schedules.CreatedDate = DateTime.Now; schedules.UpdateTime = DateTime.Now; schedules.ApprovalStatus = x.FirstOrDefault().ApprovalStatus; schedules.FinishedStatus = x.FirstOrDefault().FinishedStatus; _repoScheduleUpdate.Add(schedules); listAdd.Add(schedules); await _repoScheduleUpdate.SaveAll(); // luu db xong moi add part foreach (var part in x.ToList()) { if (part.Part == string.Empty) { var dataPart = new Part { Name = "Whole", ScheduleID = schedules.ID, Status = true }; _repoPart.Add(dataPart); await _repoPart.SaveAll(); } else { _repoPart.Add(new Part { ScheduleID = schedules.ID, Name = part.Part, }); await _repoPart.SaveAll(); } } } else { listExist.Add(x.ToList()); } } var result1 = listAdd.Where(x => x.ID > 0).ToList(); var result2 = listAdd.Where(x => x.ID == 0).ToList(); } catch (Exception ex) { throw; } }
public async Task <bool> CreateSchedule(ScheduleDtoForImportExcel obj) { try { var process = await _repoProcess.FindAll().FirstOrDefaultAsync(x => x.Name.ToUpper().Equals(obj.Process.ToUpper())); var ProcessID = 0; if (process != null) { ProcessID = process.ID; } var check = await _repoScheduleUpdate.FindAll().FirstOrDefaultAsync(y => y.ModelName.ToUpper().Equals(obj.ModelName.ToUpper()) && y.ModelNo.ToUpper().Equals(obj.ModelNo.ToUpper()) && y.ArticleNo.ToUpper().Equals(obj.ArticleNo.ToUpper()) && y.Treatment.ToUpper().Equals(obj.Process.ToUpper()) && y.Process.ToUpper().Equals(obj.Object.ToUpper())); if (check != null) { var listCheck = await _repoPart.FindAll().Where(x => x.ScheduleID == check.ID).ToListAsync(); if (obj.listPart.Count == 0) { var checks = listCheck.Select(x => x.Name).Contains("Whole"); if (!listCheck.Select(x => x.Name).Contains("Whole")) { _repoPart.Add(new Part { Name = "Whole", ScheduleID = check.ID, Status = true }); await _repoPart.SaveAll(); } // var dataPart = new Part { Name = "Whole", ScheduleID = check.ID, Status = true }; // _repoPart.Add(dataPart); // await _repoPart.SaveAll(); } else { foreach (var part in obj.listPart) { if (!listCheck.Select(x => x.Name).Contains(part.value)) { _repoPart.Add(new Part { ScheduleID = check.ID, Name = part.value, }); await _repoPart.SaveAll(); } } } } if (check == null) { // add schedule var schedules = new SchedulesUpdate(); schedules.ModelName = obj.ModelName; schedules.ModelNo = obj.ModelNo; schedules.ArticleNo = obj.ArticleNo; schedules.Treatment = obj.Process; schedules.Process = obj.Object; // schedules.a = x.Key.ArtProcessID; schedules.CreatedBy = obj.CreatedBy; schedules.ApprovalBy = 0; if (ProcessID == 1) { schedules.ProductionDate = obj.ProductionDate; schedules.EstablishDate = obj.ProductionDate.AddDays(-30); } else { schedules.ProductionDate = obj.ProductionDate; schedules.EstablishDate = obj.ProductionDate.AddDays(-15); } schedules.CreatedDate = DateTime.Now; schedules.UpdateTime = DateTime.Now; schedules.ApprovalStatus = false; schedules.FinishedStatus = false; _repoScheduleUpdate.Add(schedules); await _repoScheduleUpdate.SaveAll(); // luu db xong moi add part if (obj.listPart.Count == 0) { var dataPart = new Part { Name = "Whole", ScheduleID = schedules.ID, Status = true }; _repoPart.Add(dataPart); await _repoPart.SaveAll(); } else { foreach (var part in obj.listPart) { _repoPart.Add(new Part { ScheduleID = schedules.ID, Name = part.value, }); await _repoPart.SaveAll(); } } } return(true); } catch (System.Exception) { return(false); throw; } }