public ActionResult EndOfAuction(Guid?id) { using (var transaction = db.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { Auction auction = db.auctions.Where(a => a.id == id).FirstOrDefault(); auction.status = "COMPLETED"; auction.timeClosed = System.DateTime.Now; db.Entry(auction).State = EntityState.Modified; db.SaveChanges(); transaction.Commit(); if (auction.bids.Count != 0) { User sendTo = auction.bids.LastOrDefault().user; string subject = "Get ordered product"; string body = "You have won on the auction. Soon you will your ordered product will be sent to you. "; string mailTo = sendTo.mail; EmailClass.Email(mailTo, subject, body); var hubContext = GlobalHost.ConnectionManager.GetHubContext <HubProjekat>(); hubContext.Clients.All.updateWinner(auction.id, sendTo.name, sendTo.lastname); } } catch (Exception e) { transaction.Rollback(); log.Error($"Error-not sent mail to winner on {DateTime.Now}"); } } return(RedirectToAction("AllAuctions", "Home")); }
public ActionResult Completed(Guid?reference, string status) { using (var transaction = db.Database.BeginTransaction(IsolationLevel.Serializable)) { try { TokenOrder order = db.tokenOrders.Where(t => t.id == reference).FirstOrDefault(); if (order == null) { RedirectToAction("TokenOrders", "TokenOrder"); } if (order.status == "SUBMITTED") { if (status == "success") { order.status = "COMPLETED"; User user1 = Session["User"] as User; User user = db.users.Where(u => u.id == user1.id).FirstOrDefault(); user.numOfTokens += order.numOfTokens; var number = user.numOfTokens; var hubContext = GlobalHost.ConnectionManager.GetHubContext <HubProjekat>(); hubContext.Clients.All.userUp1(user.numOfTokens, user.id); db.Entry(user).State = EntityState.Modified; db.Entry(order).State = EntityState.Modified; db.SaveChanges(); EmailClass.Email(user.mail, "Token order", "Token order completed"); transaction.Commit(); } else { order.status = "CANCELED"; db.Entry(order).State = EntityState.Modified; db.SaveChanges(); ViewBag.Mesage = "The order is canceled"; transaction.Commit(); } } } catch (Exception e) { transaction.Rollback(); ViewBag.Message = "There is an error in transaction"; log.Error($"Error-not completed token order on {DateTime.Now}"); } } return(RedirectToAction("TokenOrders", "TokenOrder")); }