public async Task <ActionResult <EquipmentViewModel> > PostEquipment(EquipmentInputModel equipmentModel) { Equipment equipment = _mapper.Map <Equipment>(equipmentModel); _equipmentsRepository.Insert(equipment); try { await _unitWork.SaveAsync(); } catch (DbUpdateException) { if (EquipmentExists(equipment.Code)) { return(Conflict($"Ya existe un equipo con el código {equipmentModel.Code}.")); } throw; } return(_mapper.Map <EquipmentViewModel>(equipment)); }
public async Task <ResultModel <EquipmentOutputModel> > InsertEquipment([FromBody] EquipmentInputModel item) { var result = new ResultModel <EquipmentOutputModel>(); var isDuplicateCode = await _equipmentStoreService.IsDuplicateCode(item.Code, item.Id); if (isDuplicateCode) { result.Info = new Info { Succeeded = false, InfoType = Model.Enum.InfoType.Error, Message = Model.Enum.MessageType.CodeIsNotUnique }; return(result); } var equipmentItem = new EquipmentModel() { Name = item.Name, Code = item.Code, Description = item.Description, IsPortable = item.IsPortable, EquipmentTypeId = item.EquipmentTypeId }; result = await _equipmentStoreService.InsertAndSaveAsync <EquipmentOutputModel>(equipmentItem); if (!item.IsPortable && item.OperatingRoomIds != null && result.Info.Succeeded) { item.Id = result.Result.Id; await _operatingRoomEquipmentStoreService.UpdateEquipmentOperatingRoomsAsync(item); } return(result); }
public async Task <ResultModel <EquipmentOutputModel> > UpdateEquipmentOperatingRoomsAsync(EquipmentInputModel item) { var result = new ResultModel <EquipmentOutputModel> { Info = new Info { Succeeded = true } }; var currentOperatingRooms = await GetByEquipmentIdAsync(item.Id); var operatingRoomIds = currentOperatingRooms.Select(x => x.OperatingRoomId); var added = item.OperatingRoomIds.Except(operatingRoomIds); var removed = operatingRoomIds.Except(item.OperatingRoomIds); foreach (var add in added) { await InsertAsync(new OperatingRoomEquipmentModel { OperatingRoomId = add, EquipmentId = item.Id }); } foreach (var remove in removed) { await DeleteByIdAsync(currentOperatingRooms.First(x => x.EquipmentId == item.Id && x.OperatingRoomId == remove).Id); } await SaveChangesAsync(); return(result); }