Example #1
0
        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);
        }
Example #3
0
        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);
        }