public ActionResult Reply(int FromUser, int ToUser) { if (!CurrentUser.IsAdmin) { if (CurrentUser.CustomerId != FromUser && CurrentUser.CustomerId != ToUser) { throw new ArgumentException("not authorized"); } } var linq = Context.Set<PMessageEntity>() .Where(l => (l.FromUser == FromUser && l.ToUser == ToUser) || (l.FromUser == ToUser && l.ToUser == FromUser)) .Join(Context.Set<UserEntity>(),o=>o.FromUser,i=>i.Id,(o,i)=>new {P=o,FromUser=i}) .Join(Context.Set<UserEntity>(),o=>o.P.ToUser,i=>i.Id,(o,i)=>new {P=o.P,FromUser=o.FromUser,ToUser=i}) .OrderByDescending(l => l.P.Id) .ToList() .Select(l=>new PMessageViewModel().FromEntity<PMessageViewModel>(l.P,p=>{ p.FromUserModel = new CustomerViewModel().FromEntity<CustomerViewModel>(l.FromUser); p.ToUserModel = new CustomerViewModel().FromEntity<CustomerViewModel>(l.ToUser); })); var model = new PMessageViewModel() { FromUser = FromUser, FromUserModel = new CustomerViewModel().FromEntity<CustomerViewModel>(Context.Set<UserEntity>().Find(FromUser)), ToUser = ToUser, ToUserModel = new CustomerViewModel().FromEntity<CustomerViewModel>(Context.Set<UserEntity>().Find(ToUser)), }; ViewBag.RecentMsg = linq; ViewBag.ReplyList = replyBuild(model); return View(model); }
public ActionResult Reply(PMessageViewModel model) { if (!ModelState.IsValid) { return RedirectToAction("Reply",new {FromUser=model.FromUser,ToUser=model.ToUser}); } var fromUser = CurrentUser.CustomerId; _pmessageRepo.Insert(new PMessageEntity() { FromUser = fromUser, ToUser = model.ToUser, CreateDate = DateTime.Now, IsAuto = false, IsVoice = false, TextMsg = model.TextMsg }); return RedirectToAction("reply", new { FromUser = fromUser, ToUser = model.ToUser }); }
private IEnumerable< SelectListItem > replyBuild(PMessageViewModel model) { if (CurrentUser.CustomerId != model.FromUser) yield return new SelectListItem() { Text =model.FromUserModel.Nickname, Value = model.FromUser.ToString() }; if (CurrentUser.CustomerId != model.ToUser) yield return new SelectListItem() { Text = model.ToUserModel.Nickname, Value = model.ToUser.ToString() }; }