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);
            }
        }
Exemple #4
0
        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);
            }
        }