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