public async Task <IActionResult> Show([FromRoute] Guid id) { var message = await _directMessageService.GetDirectMessageByIdAsync(id); if (message == null) { return(NotFound()); } return(Ok(new { Message = DirectMessageViewModel.FromEntity(message) })); }
public IActionResult PostNotification([FromBody] DirectMessageViewModel directMessageInfo) { List <BL.Models.ErrorInfo> errorList = new List <BL.Models.ErrorInfo>(); Guid directMessageId = Guid.NewGuid(); var recipient = directMessageInfo.Recipient; Guid?toContactId = null; if (recipient != Guid.Empty) { Boolean noUsersFound = true; toContactId = _faciTechDbContext.Contact.Where(c => c.Id == recipient & c.Inactive == false).Select(c => c.Id).SingleOrDefault(); if (toContactId == null) { errorList.Add(new BL.Models.ErrorInfo { Description = "User not found - " + recipient }); return(new ValidationErrorResult(new BL.Models.ApiResponse(BL.Models.ApiStatus.Error, null, errorList))); } else { noUsersFound = false; var directMessage = new DirectMessage() { Id = directMessageId, FromContactId = base._contactId, ToContactId = (Guid)toContactId, Created = DateTime.UtcNow, CreatedBy = base._userId, Updated = DateTime.UtcNow, UpdatedBy = base._userId, Subject = directMessageInfo.Subject, Body = directMessageInfo.Body }; _faciTechDbContext.DirectMessage.Add(directMessage); _faciTechDbContext.SaveChanges(); return(new ObjectCreatedResult("directMessage", directMessageId)); } } else { errorList.Add(new BL.Models.ErrorInfo { Code = "ERR001", Description = "No receipients provided in the notification request.", }); return(new ValidationErrorResult(new BL.Models.ApiResponse(BL.Models.ApiStatus.Error, null, errorList))); } }
public async Task <IActionResult> SendDirectMessage(SendDirectMessageDto sendDirectMessageDto) { sendDirectMessageDto.From = await GetAuthenticatedUserAccount(); var result = await _directMessageService.SendDirectMessageAsync(sendDirectMessageDto); if (result.Failed) { return(BadRequest(new ValidationErrorResponse(result.Error))); } var vm = DirectMessageViewModel.FromEntity(result.Data); await _hubContext.Clients .User(result.Data.To.Id.ToString()) .SendAsync( DirectMessageHub.DirectMessageReceivedMessage, vm ); var url = Url.Link("GetDirectMessageById", new { id = result.Data.Id }); return(Created(url, new { Message = vm })); }