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));
Exemple #2
0
        public async Task <IActionResult> FetchAllUsersNotAlreadyEmployedByBusiness([FromRoute] string businessId)
        {
            var business = await _context.FetchBusiness(businessId);

            if (business == null)
            {
                return(NotFound());
            }

            var users = await _context.FetchUsersNotEmployedByBusiness(businessId);

            return(Ok(new UsersNotEmployedByBusiness()
            {
                BusinessId = businessId, Users = _mapper.Map <IList <UserDto> >(users)
            }));
        }