public async Task <ResultModel <OperationOutputModel> > InsertOperation([FromBody] OperationInputModel item) { var result = new ResultModel <OperationOutputModel>(); var isDuplicateEventNumber = await _operationStoreService.IsDuplicateEventNumber(item.EventNumber, item.Id); if (isDuplicateEventNumber) { result.Info = new Info { Succeeded = false, InfoType = Model.Enum.InfoType.Error, Message = Model.Enum.MessageType.EventNumberIsNotDifferent }; return(result); } var operationTimes = item.OperationTime.Split(':'); var operationItem = new OperationModel() { Name = item.Name, Description = item.Description, OperationTypeId = item.OperationTypeId, OperationTime = (operationTimes[0].ToNCInt() * 60) + operationTimes[1].ToNCInt(), Date = item.Date < new DateTime(2000, 01, 01) ? DateTime.Now.AddDays(1) : item.Date, //TODO: Çakma çözüm PatientId = item.PatientId, EventNumber = item.EventNumber }; result = await _operationStoreService.InsertAndSaveAsync <OperationOutputModel>(operationItem); item.Id = result.Result.Id; if (item.PersonnelIds != null && result.Info.Succeeded) { await _operationPersonnelStoreService.UpdateOperationPersonnelsAsync(item); } if (item.OperatingRoomIds != null && result.Info.Succeeded) { await _operationBlockedOperatingRoomStoreService.UpdateOperatingRoomsAsync(item); } return(result); }
public async Task <ResultModel <OperationOutputModel> > UpdateOperatingRoomsAsync(OperationInputModel item) { var result = new ResultModel <OperationOutputModel> { Info = new Info { Succeeded = true } }; var currentOperations = await GetByOperationIdAsync(item.Id); var blockedRooms = currentOperations.Select(x => x.OperatingRoomId); var addedRooms = item.OperatingRoomIds.Except(blockedRooms); var removedRooms = blockedRooms.Except(item.OperatingRoomIds); foreach (var roomId in addedRooms) { await InsertAsync(new OperationBlockedOperatingRoomModel { OperatingRoomId = roomId, OperationId = item.Id }); } foreach (var roomId in removedRooms) { await DeleteByIdAsync(currentOperations.First(x => x.OperationId == item.Id && x.OperatingRoomId == roomId).Id); } await SaveChangesAsync(); return(result); }
public async Task <ResultModel <OperationOutputModel> > UpdateOperationPersonnelsAsync(OperationInputModel item) { var result = new ResultModel <OperationOutputModel> { Info = new Info { Succeeded = true } }; var currentPersonnels = await GetByOperationIdAsync(item.Id); var personnels = currentPersonnels.Select(x => x.PersonnelId); var branchPersonnels = await _personnelStoreService.GetPersonnelsByOperationTypeIdAsync(item.OperationTypeId); var addedPersonnels = item.PersonnelIds.Except(personnels); addedPersonnels = branchPersonnels.Select(x => x.Id).Intersect(addedPersonnels); var removedPersonnels = personnels.Except(item.PersonnelIds); foreach (var personnelId in addedPersonnels) { await InsertAsync(new OperationPersonnelModel { PersonnelId = personnelId, OperationId = item.Id }); } foreach (var personnelId in removedPersonnels) { await DeleteByIdAsync(currentPersonnels.First(x => x.OperationId == item.Id && x.PersonnelId == personnelId).Id); } await SaveChangesAsync(); return(result); }