public async Task <GetRentalMessageDto> CreateRentalMessageAsync(CreateRentalMessageDto item, CancellationToken ct = default) { var newItem = _mapper.Map <RentalMessage>(item); newItem.CreatedAt = DateTime.UtcNow; _unitOfWork.RentalMessageRepository.Create(newItem); await _unitOfWork.CommitAsync(ct); return(_mapper.Map <GetRentalMessageDto>(newItem)); }
public async Task <ActionResult> CreateRentalMessageAsync([FromBody] CreateRentalMessageDto message) { BuildUserPrincipal(); message.UserId = ApiUser.Id; var result = await _rentalMessageService.CreateRentalMessageAsync(message); _backgroundJobClient.Enqueue(() => _rentalMessageService.SendEmailAsync(message, CancellationToken.None)); return(StatusCode((int)HttpStatusCode.Created, Json(JsonResultData.Success(result)))); }
public async Task SendEmailAsync(CreateRentalMessageDto item, CancellationToken ct = default) { var rental = await _unitOfWork.RentalRepository.GetAsync(item.RentalId, ct); string sendTo = string.Empty; string sendFrom = string.Empty; if (item.UserId == rental.UserId) { sendTo = rental.Robot.User.Email; sendFrom = rental.User.Email; } if (item.UserId == rental.Robot.UserId) { sendFrom = rental.Robot.User.Email; sendTo = rental.User.Email; } string messageToSend = string.Format( _emailSenderConfiguration.NewMessageNotificationTemplate, sendFrom, $"{rental.Id} - {rental.Robot.Model.Company.Name} {rental.Robot.Model.Name}", rental.Id, item.Message); EmailMessage message = new EmailMessage { Message = messageToSend, Subject = _emailSenderConfiguration.NewMessageNotificationSubject, SendToEmail = sendTo }; await _emailSendService.SendMessageAsync(message, ct); }