public async Task <IHttpActionResult> Put(TicketDTO value) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var dbcontext = unitOfWorkFactory.CreateTransactionalUnitOfWork()) { try { var answer = await Task.Run(() => ticketsModel.BuyTicket(value, dbcontext)); if (!answer) { return(Conflict()); } //await dbcontext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { return(StatusCode(HttpStatusCode.Conflict)); } dbcontext.Accept(); return(StatusCode(HttpStatusCode.NoContent)); } }
public ActionResult BuyTicket(string ticket) { TicketViewModel viewModel; try { viewModel = JsonConvert.DeserializeObject <TicketViewModel>(ticket); } catch { return(View("MyError", new ErrorViewModel() { ErrorMessage = "Wystąpił nieoczekiwany błąd" })); } if (viewModel == null) { return(View("MyError", new ErrorViewModel() { ErrorMessage = "Wystąpił nieoczekiwany błąd." })); } using (ITransactionalData dbContext = unitOfFactory.CreateTransactionalUnitOfWork()) { ApplicationUserManager userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>(); bool ok = buyTicketModel.BuyTicket(viewModel, dbContext, userManager); if (ok) { dbContext.Accept(); } else { return(View("MyError", new ErrorViewModel() { ErrorMessage = "Z przykrością informujemy, że ktoś był szybszy i zajął twoje miejsce" })); } } return(View("MySuccess", new ErrorViewModel() { ErrorMessage = "Transakcja przebiegła poprawnie. Bilet został zakupiony." })); }
public ActionResult DeleteTicket(string stringTicket) { Ticket ticket; try { ticket = JsonConvert.DeserializeObject <Ticket>(stringTicket); } catch { return(View("MyError", new ErrorViewModel() { ErrorMessage = "Wystąpił nieoczekiwany błąd" })); } if (ticket == null || ticket.ConnectionPath.StartTime < DateTime.Now.AddHours(1)) { return(View("MyError", new ErrorViewModel() { ErrorMessage = "Czas odjazdu minął." })); } using (var dbContext = unitOfWorkFactory.CreateTransactionalUnitOfWork()) { ApplicationUserManager userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>(); if (!myTicketModel.DeleteTicket(ticket, dbContext, userManager)) { return(View("MyError", new ErrorViewModel() { ErrorMessage = "Z przykrością informujemy, że ten bilet został już wcześniej usunięty" })); } dbContext.Accept(); } return(RedirectToAction("Index")); }