private void SaveStaff(JArray rowsJArray) { var staffService = CreateService <StaffService>(); List <UnitStaff> unitstaffs = new List <UnitStaff>(); foreach (JObject jObject in rowsJArray) { if (jObject["Status"].ToString() != "Error") { Guid unitId = Guid.Parse(jObject["Unit.NumberId"].ToString()); UnitStaff unitStaff = new UnitStaff(); unitStaff.UnitId = unitId; unitStaff.Staff = new Staff(); SetValues(jObject, unitStaff.Staff); unitstaffs.Add(unitStaff); } } staffService.BulkSave(unitstaffs, this.communityId); }
public void BulkSave(List <UnitStaff> unitStaffs, Guid communityId) { var staffTask = _faciTechDbContext .UnitStaff .Where(e => e.Unit.CommunityId == communityId) .Select(e => e.Staff) .ToListAsync(); var unitStaffTask = _faciTechDbContext.UnitStaff .Where(e => e.Unit.CommunityId == communityId) .ToListAsync(); Task.WaitAll(staffTask, unitStaffTask); var dbStaffs = staffTask.Result; var dbUnitStaffs = unitStaffTask.Result; foreach (var unitStaff in unitStaffs) { var isStaffAdd = false; var isUnitStaffAdd = false; var dbStaff = dbStaffs.Where(e => e.FirstName == unitStaff.Staff.FirstName && e.LastName == unitStaff.Staff.LastName && e.MobileNumber == unitStaff.Staff.MobileNumber).FirstOrDefault(); if (dbStaff == null) { isStaffAdd = true; dbStaff = new Staff() { Id = Guid.NewGuid() }; } var dbUnitStaff = dbUnitStaffs .Where(e => e.UnitId == unitStaff.UnitId && e.StaffId == dbStaff.Id) .FirstOrDefault(); if (dbUnitStaff == null) { isUnitStaffAdd = true; dbUnitStaff = new UnitStaff() { Id = Guid.NewGuid() }; } dbStaff.FirstName = unitStaff.Staff.FirstName; dbStaff.LastName = unitStaff.Staff.LastName; dbStaff.MobileNumber = unitStaff.Staff.MobileNumber; dbStaff.StaffType = unitStaff.Staff.StaffType; dbStaff.Address = unitStaff.Staff.Address; dbStaff.AadharNumber = unitStaff.Staff.AadharNumber; dbStaff.CommunityId = communityId; dbUnitStaff.UnitId = unitStaff.UnitId; dbUnitStaff.StaffId = dbStaff.Id; if (isStaffAdd) { dbStaffs.Add(dbStaff); _faciTechDbContext.Add(dbStaff); } if (isUnitStaffAdd) { dbUnitStaffs.Add(dbUnitStaff); _faciTechDbContext.Add(dbUnitStaff); } } _faciTechDbContext.SaveChanges(); }