コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }