Esempio n. 1
0
        public bool buyTicket([FromBody] TicketPurchaseModel ticketPurchaseDetails)
        {
            if (ticketPurchaseDetails.stationA == null || ticketPurchaseDetails.stationB == null)
            {
                return(false);
            }

            if (HttpContext.Session.Get("currentUser") == null)
            {
                return(false);
            }

            string request = "BuyTicket;";

            request += Encoding.ASCII.GetString(HttpContext.Session.Get("currentUser")) + ";";
            request += ticketPurchaseDetails.stationA + ";";
            request += ticketPurchaseDetails.stationB;

            byte[] response;
            try {
                response = Communicate(request);
            } catch (Exception) {
                response = BitConverter.GetBytes(false);
            }

            if (BitConverter.ToBoolean(response, 0))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 2
0
        public ActionResult PurchaseTickets(string tenant, string eventId, string customerId, string ticketPrice, string ticketCount, string sectionId)
        {
            bool purchaseResult  = false;
            int  numberOfTickets = Convert.ToInt32(ticketCount);

            if (string.IsNullOrEmpty(eventId) || string.IsNullOrEmpty(customerId) || string.IsNullOrEmpty(ticketPrice) || string.IsNullOrEmpty(ticketCount))
            {
                var message = _localizer["Enter quantity"];
                DisplayMessage(message, "Confirmation");
                return(RedirectToAction("Index", "Events", new { tenant = Startup.TenantConfig.TenantName }));
            }

            var ticketPurchaseModel = new TicketPurchaseModel
            {
                CustomerId    = Convert.ToInt32(customerId),
                PurchaseTotal = Convert.ToDecimal(ticketPrice)
            };

            SetTenantConfig(tenant);

            var latestPurchaseTicketId = _iTicketPurchaseRepository.GetNumberOfTicketPurchases(_connectionString, Startup.TenantConfig.TenantId);

            ticketPurchaseModel.TicketPurchaseId = latestPurchaseTicketId + 1;

            var purchaseTicketId = _iTicketPurchaseRepository.Add(ticketPurchaseModel, _connectionString, Startup.TenantConfig.TenantId);

            var ticketModel = new TicketModel
            {
                SectionId        = Convert.ToInt32(sectionId),
                EventId          = Convert.ToInt32(eventId),
                TicketPurchaseId = purchaseTicketId
            };

            Random rnd = new Random();

            for (var i = 0; i < numberOfTickets; i++)
            {
                Random rnd2 = new Random(5000);
                ticketModel.RowNumber  = rnd.Next(0, 100000);
                ticketModel.SeatNumber = rnd2.Next(0, 100000);
                purchaseResult         = _ticketRepository.Add(ticketModel, _connectionString, Startup.TenantConfig.TenantId);
            }

            var successMessage = _localizer[$"You have successfully purchased {ticketCount} tickets."];
            var failureMessage = _localizer["Failed to purchase tickets."];

            if (purchaseResult)
            {
                DisplayMessage(successMessage, "Confirmation");
            }
            else
            {
                DisplayMessage(failureMessage, "Error");
            }

            return(RedirectToAction("Index", "Events", new { tenant = Startup.TenantConfig.TenantName }));
        }
Esempio n. 3
0
 public static TicketPurchases ToTicketPurchasesEntity(this TicketPurchaseModel ticketPurchaseModel)
 {
     //password not required to save demo friction
     return(new TicketPurchases
     {
         CustomerId = ticketPurchaseModel.CustomerId,
         PurchaseDate = DateTime.Now,
         PurchaseTotal = ticketPurchaseModel.PurchaseTotal
     });
 }
        public async Task <int> AddTicketPurchase(TicketPurchaseModel ticketPurchaseModel, int tenantId)
        {
            using (var context = CreateContext())
            {
                var ticketPurchase = ticketPurchaseModel.ToTicketPurchasesEntity();

                context.TicketPurchases.Add(ticketPurchase);
                await context.SaveChangesAsync();

                return(ticketPurchase.TicketPurchaseId);
            }
        }
Esempio n. 5
0
        public void AddTicketPurchaseTest()
        {
            var ticketPurchaseModel = new TicketPurchaseModel
            {
                PurchaseDate     = DateTime.Now,
                TicketPurchaseId = 12,
                CustomerId       = 6,
                PurchaseTotal    = 5
            };

            var result = (_tenantRepository.AddTicketPurchase(ticketPurchaseModel, _tenantId)).Result;

            Assert.IsNotNull(result);
            Assert.AreEqual(_numberOfTicketPurchases, 1);
            Assert.AreEqual(12, result);
        }
        public void AddTicketPurchaseTest()
        {
            var ticketPurchaseModel = new TicketPurchaseModel
            {
                PurchaseDate     = DateTime.Now,
                TicketPurchaseId = 12,
                CustomerId       = 6,
                PurchaseTotal    = 5
            };

            var result = _ticketPurchaseRepository.Add(ticketPurchaseModel, _connectionString, _tenantId);

            _numberOfTicketPurchases++;

            Assert.IsNotNull(result);
            Assert.AreEqual(_numberOfTicketPurchases, 2);
            Assert.AreEqual(12, result);
        }
        public int Add(TicketPurchaseModel ticketPurchaseModel, string connectionString, int tenantId)
        {
            using (var context = CreateContext(connectionString, tenantId))
            {
                //password not required to save demo friction
                var ticketPurchase = new TicketPurchases
                {
                    CustomerId    = ticketPurchaseModel.CustomerId,
                    PurchaseDate  = DateTime.Now,
                    PurchaseTotal = ticketPurchaseModel.PurchaseTotal
                };

                context.TicketPurchases.Add(ticketPurchase);
                context.SaveChanges();

                return(ticketPurchase.TicketPurchaseId);
            }
        }
        public async Task <ActionResult> PurchaseTickets(string tenant, int eventId, int customerId, decimal ticketPrice, int ticketCount, int sectionId)
        {
            try
            {
                bool purchaseResult = false;

                var ticketPurchaseModel = new TicketPurchaseModel
                {
                    CustomerId    = customerId,
                    PurchaseTotal = ticketPrice
                };

                var tenantDetails = (_catalogRepository.GetTenant(tenant)).Result;
                if (tenantDetails != null)
                {
                    SetTenantConfig(tenantDetails.TenantId, tenantDetails.TenantIdInString);

                    var purchaseTicketId = await _tenantRepository.AddTicketPurchase(ticketPurchaseModel, tenantDetails.TenantId);

                    List <TicketModel> ticketsModel = BuildTicketModel(eventId, sectionId, ticketCount, purchaseTicketId);
                    purchaseResult = await _tenantRepository.AddTickets(ticketsModel, tenantDetails.TenantId);

                    if (purchaseResult)
                    {
                        DisplayMessage(_localizer[$"You have successfully purchased {ticketCount} ticket(s)."], "Confirmation");
                    }
                    else
                    {
                        DisplayMessage(_localizer["Failed to purchase tickets."], "Error");
                    }
                }
                else
                {
                    return(View("TenantError", tenant));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(0, ex, "Purchase tickets failed for tenant {tenant} and event {eventId}", tenant, eventId);
                return(View("TenantError", tenant));
            }
            return(RedirectToAction("Index", "Events", new { tenant }));
        }
Esempio n. 9
0
 public async Task <int> AddTicketPurchase(TicketPurchaseModel ticketPurchaseModel, int tenantId)
 {
     TicketPurchaseModels.Add(ticketPurchaseModel);
     return(ticketPurchaseModel.TicketPurchaseId);
 }
 public int Add(TicketPurchaseModel ticketPurchaseModel, string connectionString, int tenantId)
 {
     TicketPurchaseModels.Add(ticketPurchaseModel);
     return(ticketPurchaseModel.TicketPurchaseId);
 }
Esempio n. 11
0
        public async Task <ActionResult> PurchaseTickets(string tenant, string eventId, string customerId, string ticketPrice, string ticketCount, string sectionId)
        {
            try
            {
                bool purchaseResult  = false;
                int  numberOfTickets = Convert.ToInt32(ticketCount);

                if (string.IsNullOrEmpty(eventId) || string.IsNullOrEmpty(customerId) || string.IsNullOrEmpty(ticketPrice) || string.IsNullOrEmpty(ticketCount))
                {
                    var message = _localizer["Enter quantity"];
                    DisplayMessage(message, "Confirmation");
                    return(RedirectToAction("Index", "Events", new { tenant }));
                }

                var ticketPurchaseModel = new TicketPurchaseModel
                {
                    CustomerId    = Convert.ToInt32(customerId),
                    PurchaseTotal = Convert.ToDecimal(ticketPrice)
                };

                var tenantDetails = (_catalogRepository.GetTenant(tenant)).Result;
                if (tenantDetails != null)
                {
                    SetTenantConfig(tenantDetails.TenantId, tenantDetails.TenantIdInString);

                    var latestPurchaseTicketId = await _tenantRepository.GetNumberOfTicketPurchases(tenantDetails.TenantId);

                    ticketPurchaseModel.TicketPurchaseId = latestPurchaseTicketId + 1;

                    var purchaseTicketId = await _tenantRepository.AddTicketPurchase(ticketPurchaseModel, tenantDetails.TenantId);

                    var ticketModel = new TicketModel
                    {
                        SectionId        = Convert.ToInt32(sectionId),
                        EventId          = Convert.ToInt32(eventId),
                        TicketPurchaseId = purchaseTicketId
                    };

                    Random rnd = new Random();
                    for (var i = 0; i < numberOfTickets; i++)
                    {
                        Random rnd2 = new Random(5000);
                        ticketModel.RowNumber  = rnd.Next(0, 100000);
                        ticketModel.SeatNumber = rnd2.Next(0, 100000);
                        purchaseResult         = await _tenantRepository.AddTicket(ticketModel, tenantDetails.TenantId);
                    }

                    if (purchaseResult)
                    {
                        var successMessage = _localizer[$"You have successfully purchased {ticketCount} ticket(s)."];
                        DisplayMessage(successMessage, "Confirmation");
                    }
                    else
                    {
                        var failureMessage = _localizer["Failed to purchase tickets."];
                        DisplayMessage(failureMessage, "Error");
                    }
                }
                else
                {
                    return(View("TenantError", tenant));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(0, ex, "Purchase tickets failed for tenant {tenant} and event {eventId}", tenant, eventId);
            }
            return(RedirectToAction("Index", "Events", new { tenant }));
        }