public ActionResult SendMessageResponse(OpenedMessageViewModel omVM) { if (!Request.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } else { if (ModelState.IsValid) { //send a request on the main server and await for the response long curentUserId = User.Identity.GetUserId <long>(); DTOHelper dtoHlp = new DTOHelper(); MyRemoteServices.AgentEndpointPortClient aepc = new MyRemoteServices.AgentEndpointPortClient(); MyRemoteServices.sendMessageRequest smRequest = dtoHlp.GetMessageRequest(omVM, curentUserId); MyRemoteServices.sendMessageResponse smResponse = aepc.sendMessage(smRequest); if (smResponse.responseWrapper.success) { //save localy using (var ctx = new ApplicationDbContext()) { ResponseMessage respMsg = new ResponseMessage { Content = omVM.ResponseContent, MainServerId = (long)smResponse.responseWrapper.responseBody }; ctx.ResponseMessages.Add(respMsg); Message msg = ctx.Messages.FirstOrDefault(x => x.Id == omVM.Id); msg.HasResponse = true; msg.ResponseMessage = respMsg; ctx.SaveChanges(); } } else { //some error happened, retry TempData["error"] = smResponse.responseWrapper.message; return(RedirectToAction("OpenMessage", "Agent", new { messageId = omVM.Id })); } TempData["success"] = "Successfully sent the response message to: " + omVM.SenderUserName; return(RedirectToAction("OpenMessage", "Agent", new { messageId = omVM.Id })); } else { //invalid VM exception TempData["error"] = "Some form atributes are incorrect"; return(RedirectToAction("OpenMessage", "Agent", new { messageId = omVM.Id })); } } }
// GET: OpenMessage public ActionResult OpenMessage(long messageId) { if (!Request.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } else { MessagesDisplayRepo msgdRepo = new MessagesDisplayRepo(); long currentUserId = User.Identity.GetUserId <long>(); OpenedMessageViewModel model = msgdRepo.GetOpennedMessage(messageId); return(View(model)); } }
public OpenedMessageViewModel GetOpennedMessage(long messageId) { using (var ctx = new ApplicationDbContext()) { Message msg = ctx.Messages .Include("RegisteredUserInfo") .Include("ResponseMessage") .FirstOrDefault(x => x.Id == messageId); if (!msg.IsRead) { msg.IsRead = true; ctx.SaveChanges(); } OpenedMessageViewModel retVM = null; if (msg.ResponseMessage == null) { retVM = new OpenedMessageViewModel { Id = msg.Id, SenderId = msg.RegisteredUserInfo.Id, Content = msg.Content, HasResponse = msg.HasResponse, SenderUserName = msg.RegisteredUserInfo.UserName }; } else { retVM = new OpenedMessageViewModel { Content = msg.Content, HasResponse = msg.HasResponse, SenderUserName = msg.RegisteredUserInfo.UserName, ResponseContent = msg.ResponseMessage.Content }; } return(retVM); } }
public MyRemoteServices.sendMessageRequest GetMessageRequest(OpenedMessageViewModel omVM, long curentUserId) { using (var ctx = new ApplicationDbContext()) { long agentId = (long)ctx.Users.FirstOrDefault(x => x.Id == curentUserId).MainServerId; long userReceiverId = (long)ctx.RegisteredUsersInfo.FirstOrDefault(x => x.Id == omVM.SenderId).MainServerId; MyRemoteServices.Message msgData = new MyRemoteServices.Message { content = omVM.ResponseContent, senderAgentMainServerId = agentId, receiverUserMainServerId = userReceiverId }; MyRemoteServices.sendMessageRequest retObj = new MyRemoteServices.sendMessageRequest { message = msgData }; return(retObj); } }