Esempio n. 1
0
        private async Task SendNotifyRequestExhibit(RequestExhibitDto dto)
        {
            var notifyReceiver = new Notification
            {
                User = new User {
                    Id = dto.Receiver.Owner.UserId
                },
                Text =
                    $"У вас запросили экспонат {dto.Exhibit.Name} в подразделение {dto.Consumer.Name}. Вы согласны?",
                SubdivisionId = dto.Receiver.Id,
                ExhibitId     = dto.Exhibit.Id,
                IsRead        = false,
                Confirm       = Confirm.NeededConfirm,
                CreationTime  = DateTimeOffset.Now
            };
            await _notificationUseCases.Notify(notifyReceiver);

            var notifyConsumer = new Notification
            {
                User = new User {
                    Id = dto.Consumer.Owner.UserId
                },
                Text = $"Вы запросили экспонат {dto.Exhibit.Name} из подразделения {dto.Receiver.Name}." +
                       $" Ожидайте подтверждение представителя {dto.Receiver.Name}",
                SubdivisionId = dto.Consumer.Id,
                ExhibitId     = dto.Exhibit.Id,
                IsRead        = false,
                Confirm       = Confirm.SystemInformation,
                CreationTime  = DateTimeOffset.Now
            };
            await _notificationUseCases.Notify(notifyConsumer);
        }
Esempio n. 2
0
        private static void CheckCapacity(RequestExhibitDto dto)
        {
            var availableCapacity = dto.Consumer.Capacity - dto.Exhibit.Count;

            if (availableCapacity < 0)
            {
                throw new BadRequestException(
                          $"Subdivision '{dto.Consumer.Id}' cannot accommodate the exhibit with id '{dto.Exhibit.Id}'");
            }
        }
Esempio n. 3
0
        private async Task HasOwners(RequestExhibitDto dto)
        {
            if (dto.Receiver.Owner.UserId == null)
            {
                throw new BadRequestException(
                          $"No representative found for this subdivision with id '{dto.Receiver.Id}'.");
            }

            if (!await _editorManager.IsOwner <BaseEntity <Guid> >(dto.Consumer, dto.UserId))
            {
                throw new BadRequestException(
                          $"User with Id {dto.UserId} is not owner subdivision {dto.Consumer.Id}");
            }
        }
Esempio n. 4
0
        public async Task RequestExhibit(Guid subdivisionId, Guid exhibitId, string userId)
        {
            var exhibit = await _exhibitUseCases.Get(exhibitId);

            var dto = new RequestExhibitDto
            {
                Consumer = await Get(subdivisionId),
                Exhibit  = exhibit,
                Receiver = await Get(exhibit.Subdivision.Id),
                UserId   = userId
            };

            await ValidateRequestExhibit(dto);
            await SendNotifyRequestExhibit(dto);
        }
Esempio n. 5
0
        private async Task ValidateRequestExhibit(RequestExhibitDto dto)
        {
            await HasOwners(dto);

            CheckCapacity(dto);
        }