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"));
        }