public ActionResult CancelTrade(int?id) { if (!ParamsAreValid(id)) { return(RedirectToAction("Profile", "Profile")); } var db = new FavorDbContext(); var favorTradeModel = db.FavorTradeModels.Find(id); if (!ParamsAreValid(favorTradeModel)) { return(RedirectToAction("Profile", "Profile")); } var userThatSendsCancelMessage = db.Users.FirstOrDefault(u => u.Id == favorTradeModel.SenderId); Message cancelMessage = new Message { ReceiverId = favorTradeModel.RecieverId, SenderEmail = userThatSendsCancelMessage.Email, Title = favorTradeModel.FavorTitle, Content = "The trade favor with this title was canceled", Type = MessageType.System }; MessageController test = new MessageController(); test.SendMessage(cancelMessage); db.FavorTradeModels.Remove(favorTradeModel); db.SaveChanges(); return(RedirectToAction("Profile", "Profile")); }
public ActionResult AcceptTrade(int?id) { if (!ParamsAreValid(id)) { return(RedirectToAction("Profile", "Profile")); } var db = new FavorDbContext(); var favorTradeModel = db.FavorTradeModels.Find(id); var fullFavor = db.Favors.Find(favorTradeModel.FavorId); if (!ParamsAreValid(favorTradeModel, fullFavor)) { return(RedirectToAction("Profile", "Profile")); } var receiverUser = db.Users.Include(u => u.PendingFavors).Include(u => u.AccomplishedFavors).FirstOrDefault(u => u.Id == favorTradeModel.RecieverId); var senderUser = db.Users.Include(u => u.SentFavors).Include(u => u.AccomplishedFavors).FirstOrDefault(u => u.Id == favorTradeModel.SenderId); var accomplishedTradeModelForTheReceiver = new AccomplishedTradeModel { FavorTitle = favorTradeModel.FavorTitle, FavorContent = favorTradeModel.FavorContent, TradeOff = favorTradeModel.TradeOff, SenderId = favorTradeModel.SenderId, SenderFullName = favorTradeModel.SenderFullName, ReceiverId = favorTradeModel.RecieverId, ReceiverFullName = favorTradeModel.RecieverFullName }; var accomplishedTradeForTheSender = AccomplishedTradeModel.ToAccomplishedTradeModel(accomplishedTradeModelForTheReceiver); if (!ParamsAreValid(receiverUser, senderUser)) { return(RedirectToAction("Profile", "Profile")); } List <FavorTradeModel> allFavorTradeModels = db.FavorTradeModels .Where(ftm => ftm.FavorId == favorTradeModel.FavorId && ftm.SenderId != favorTradeModel.SenderId) .ToList(); MessageController test = new MessageController(); for (int currFavorTradeModel = 0; currFavorTradeModel < allFavorTradeModels.Count; currFavorTradeModel++) { var user = db.Users.Find(allFavorTradeModels[currFavorTradeModel].RecieverId); Message cancelMessage = new Message { ReceiverId = allFavorTradeModels[currFavorTradeModel].SenderId, SenderEmail = user.Email, Title = favorTradeModel.FavorTitle, Content = "The trade favor with this title was canceled", Type = MessageType.System }; test.SendMessage(cancelMessage); db.FavorTradeModels.Remove(allFavorTradeModels[currFavorTradeModel]); } receiverUser.AccomplishedFavors.Add(accomplishedTradeModelForTheReceiver); senderUser.AccomplishedFavors.Add(accomplishedTradeForTheSender); Message successMessage = new Message { ReceiverId = receiverUser.Id, SenderEmail = senderUser.Email, Title = accomplishedTradeForTheSender.FavorTitle, Content = "The trade favor with this title was accepted!!!", Type = MessageType.System }; test.SendMessage(successMessage); allFavorTradeModels = db.FavorTradeModels .Where(ftm => ftm.FavorId == favorTradeModel.FavorId) .ToList(); for (int currFavorTradeModel = 0; currFavorTradeModel < allFavorTradeModels.Count; currFavorTradeModel++) { db.FavorTradeModels.Remove(allFavorTradeModels[currFavorTradeModel]); } db.Favors.Remove(fullFavor); db.SaveChanges(); return(RedirectToAction("Profile", "Profile")); }