public async Task CreateOrEdit(CreateOrEditShiftTypeDto input) { if (input.Id == null) { await Create(input); } else { await Update(input); } }
protected virtual async Task Update(CreateOrEditShiftTypeDto input) { //temp solution need to adjustment var shiftType = await _shiftTypeRepository.GetAllIncluding(m => m.ShiftTypeDetails).FirstOrDefaultAsync(x => x.Id == (int)input.Id); var oldShiftTypeDetails = new HashSet <ShiftTypeDetail>(shiftType.ShiftTypeDetails.ToList()); var newShifTypeDetails = new HashSet <ShiftTypeDetailDto>(input.ShiftTypeDetails.ToList()); foreach (var detail in oldShiftTypeDetails) { if (!newShifTypeDetails.Any(x => x.Id == detail.Id)) { shiftType.ShiftTypeDetails.Remove(detail); } else { var inputDetail = newShifTypeDetails.Where(x => x.Id == detail.Id).FirstOrDefault(); detail.InTimeFirstScan = inputDetail.InTimeFirstScan; detail.InTimeLastScan = inputDetail.InTimeLastScan; detail.OutTimeFirstScan = inputDetail.OutTimeFirstScan; detail.OutTimeLastScan = inputDetail.OutTimeLastScan; } } foreach (var item in newShifTypeDetails) { if (item.Id == 0) { shiftType.ShiftTypeDetails.Add(ObjectMapper.Map <ShiftTypeDetail>(item)); } } shiftType.DescriptionAr = input.DescriptionAr; shiftType.DescriptionEn = input.DescriptionEn; shiftType.InScan = input.InScan; shiftType.OutScan = input.OutScan; shiftType.CrossDay = input.CrossDay; shiftType.AlwaysAttend = input.AlwaysAttend; shiftType.Open = input.Open; shiftType.MaxBoundryTime = input.MaxBoundryTime; shiftType.NumberOfDuties = input.ShiftTypeDetails.Count(); await _shiftTypeRepository.UpdateAsync(shiftType); }
protected virtual async Task Create(CreateOrEditShiftTypeDto input) { var shiftType = ObjectMapper.Map <ShiftType>(input); shiftType.ShiftTypeDetails = new List <ShiftTypeDetail>(); if (input.ShiftTypeDetails.Count > 0) { foreach (var item in input.ShiftTypeDetails) { shiftType.ShiftTypeDetails.Add(ObjectMapper.Map <ShiftTypeDetail>(item)); } } await _shiftTypeRepository.InsertAsync(shiftType); }