Exemplo n.º 1
0
 public async Task <Result> Handle(CreateEmployeeCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.OwnerEmail)
 .FailureIf("Owner not found.")
 .Ensure(user => user.Role != Role.Owner, "Owner cannot be employee.", HttpCode.Conflict)
 .FailureIf(async _ => await _repository.FetchUserAggregate(command.UserId), "User not found.")
 .AndThen(user => user.UpdateRole(Role.Employee))
 .AndThen(_ => _mapper.Map <Employee>(command))
 .Validate(_validator)
 .Finally(employee => _repository.AddAndSave(employee));
Exemplo n.º 2
0
 public async Task <Result> Handle(UpdateBusinessCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.OwnerEmail)
 .FailureIf("User not found.")
 .Ensure(user => user.GetBusiness(command.Id) != null, "Business not found.")
 .AndThen(_ => _mapper.Map <Business>(command))
 .Validate(_businessValidator)
 .Finally(updatedBusiness => _repository.UpdateEntity(command.Id, updatedBusiness));
 public async Task <Result> Handle(CreateBusinessCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.OwnerEmail)
 .FailureIf("User not found.")
 .AndThen(user => user.UpdateRole(Role.Owner))
 .AndThen(_ => _mapper.Map <Business>(command))
 .Validate(_validator)
 .Finally(business => _repository.AddAndSave(business));
 public async Task <Result> Handle(GenerateTimeSlotsCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.OwnerEmail)
 .FailureIf("User not found.")
 .Ensure(user => user.GetTimeSlotByDate(command.BusinessId, command.Start) == null,
         "Time slots already generated for this date.", HttpCode.Conflict)
 .AndThen(user => user.GetBusiness(command.BusinessId)?.GenerateTimeSlots(command.Start))
 .Finally(timeSlots => _repository.AddAndSave(timeSlots.ToArray()));
Exemplo n.º 5
0
 public async Task <Result <TokenResponse> > Handle(RegisterCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.Email)
 .ToResult()
 .Ensure(user => user == null, $"The email '{command.Email}' is already in use.")
 .AndThen(_ => _mapper.Map <User>(command))
 .Validate(_validator)
 .AndThenF(async newUser => await _repository.AddAndSave(newUser))
 .Finally(_mapper.Map <TokenResponse>);
 public async Task <Result> Handle(CreateBookingCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.UserId)
 .FailureIf("User not found.")
 .Ensure(user => !user.BookingExists(command.TimeSlotId),
         "You already have a booking for this time slot.")
 .FailureIf(async _ => await _repository.FetchTimeSlot(command.TimeSlotId), "Time Slot does not exist.")
 .Ensure(timeSlot => timeSlot.Bookings.Count() < timeSlot.Capacity, "This time slot is full.")
 .AndThen(_ => _mapper.Map <Booking>(command))
 .Validate(_validator)
 .Finally(booking => _repository.AddAndSave(booking));
Exemplo n.º 7
0
 public async Task <Result> Handle(SendMessageCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.SenderId)
 .ToResult()
 .AndThen(async user =>
 {
     var business = await _repository.FetchBusiness(command.SenderId);
     return(new { business, user });
 })
 .Ensure(entry => entry.user != null || entry.business != null, "Invalid sender.")
 .AndThen(async _ =>
 {
     var user     = await _repository.FetchUserAggregate(command.ReceiverId);
     var business = await _repository.FetchBusiness(command.ReceiverId);
     return(new { business, user });
 })
 .Ensure(entry => entry.user != null || entry.business != null, "Invalid receiver.")
 .AndThen(_ => _mapper.Map <Message>(command))
 .Validate(_validator)
 .Finally(message => _repository.AddAndSave(message));
Exemplo n.º 8
0
        public async Task <IActionResult> FetchUserAggregate()
        {
            var userEmail = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
            var user      = await _context.FetchUserAggregate(userEmail);

            if (user == null)
            {
                return(NotFound("User was not found"));
            }

            return(Ok(_mapper.Map <UserDto>(user)));
        }
Exemplo n.º 9
0
 public async Task <Result> Handle(UpdateUserInfoCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.Id)
 .FailureIf("User not found.")
 .AndThen(user => user.Update(command.Name, command.Email, Convert(command)))
 .Validate(_validator)
 .Finally(updatedUser => _repository.UpdateEntity(updatedUser.Id, updatedUser));
Exemplo n.º 10
0
 public async Task <Result <TokenResponse> > Handle(LoginCommand command, CancellationToken cancellationToken)
 => await _repository.FetchUserAggregate(command.Email)
 .ToResult()
 .Ensure(user => user != null && BC.Verify(command.Password, user.Password), string.Empty, HttpCode.Unauthorized)
 .Finally(_mapper.Map <TokenResponse>);