private PrizeWinnerModel DrawWinner(int prizeId) { PrizeTicket winningTicket = null; Attendee winningAttendee = null; // Check to see if there are any prizes that are not won if (_prizeDataAccessor.GetNumberPrizesAvailbleToDraw(prizeId) > 0) { // Draw a prize winner winningTicket = _prizeDataAccessor.DrawPrizeWinner(prizeId); // Check if winning ticket is not null to prevent NullReferenceException if (winningTicket != null) { winningAttendee = _attendeeDataAccessor.Get(winningTicket.AttendeeId); } } PrizeWinnerModel winnerModel = null; if (winningTicket != null) { winnerModel = new PrizeWinnerModel { Name = winningAttendee.FirstName + " " + winningAttendee.LastName, OrganizationName = winningAttendee.Company, AttendeeId = winningAttendee.Id }; } return(winnerModel); }
// Método para imprimir la lista de los números premiados y ganadores public void printPrizeTicket(LTD_LotteryDraw pDraw, string[] pWinningNumberArray, bool pSendToPrint, bool pShowInPanel) { // Configurar impresión para Ticket de Venta TicketPrinter ticketPrinter = new TicketPrinter(); PrizeTicket prizeTicket = new PrizeTicket(); prizeTicket.companyName = UtilityService.getCompanyName(); prizeTicket.title = "NÚMEROS PREMIADOS"; // Obtener datos del punto de venta LPS_LotteryPointSale pointSale = UtilityService.getPointSale(); prizeTicket.pointSaleName = pointSale.LPS_DisplayName; prizeTicket.drawDate = pDraw.LTD_CreateDate; // Obtener datos de tipo de sorteo LotteryDrawTypeRepository drawTypeRepo = new LotteryDrawTypeRepository(); LDT_LotteryDrawType drawType = drawTypeRepo.getById(pDraw.LDT_LotteryDrawType); prizeTicket.drawTypeCode = drawType.LDT_Code; // Llenar datos del número de lista prizeTicket.createDate = DateTime.Now; // Obtener datos de los premios PrizeFactorService prizeFactorService = new PrizeFactorService(); LPF_LotteryPrizeFactor prizeFactor = prizeFactorService.getByGroup(drawType.LDT_Id); if (prizeFactor != null) { prizeTicket.prizeFactorArray[0] = prizeFactor.LPF_FirtsPrizeFactor; prizeTicket.prizeFactorArray[1] = prizeFactor.LPF_SecondPrizeFactor; prizeTicket.prizeFactorArray[2] = prizeFactor.LPF_ThirdPrizeFactor; } // Obtener listado de información de ganadores LotteryListRepository listRepository = new LotteryListRepository(); prizeTicket.listWinningInfo = listRepository.getWinningNumbersList(pDraw, pWinningNumberArray); prizeTicket.winnerNumbers = pWinningNumberArray; ticketPrinter.prizeTicket = prizeTicket; // Obtener nombre de impresora y enviar impresión string printerName = UtilityService.getTicketPrinterName(); ticketPrinter.printPrizeTicket(printerName, pSendToPrint); // Almacenar importe de premio para el sorteo DrawBalanceService drawBalanceService = new DrawBalanceService(); drawBalanceService.saveBalance(pDraw.LDT_LotteryDrawType, pDraw.LTD_CreateDate, 0, ticketPrinter.prizeImport); if (pShowInPanel) { //Console.Write(ticketPrinter.ticketStringText); MessageBox.Show(ticketPrinter.ticketStringText); } }
/// <summary> /// DrawPrizeWinners - Draws winners for all instances of of a prize /// </summary> /// <param name="prizeId"></param> /// <returns>List of tickets that were drawn as winners</returns> public IList <PrizeTicket> DrawPrizeWinners(int prizeId) { IList <PrizeTicket> winningTickets = new List <PrizeTicket>(); int numberOfAvailiblePrizes = GetNumberPrizesAvailbleToDraw(prizeId); for (int i = 0; i < numberOfAvailiblePrizes; i++) { PrizeTicket winningTicket = DrawPrizeWinner(prizeId); if (winningTicket != null) { winningTickets.Add(winningTicket); } } return(winningTickets); }
/// <summary> /// DrawPrizeWinner - Draw prize winner /// </summary> /// <param name="prizeId">prize id</param> /// <returns>PrizeTicket, ticket for attendee</returns> public PrizeTicket DrawPrizeWinner(int prizeId) { if (GetNumberPrizesAvailbleToDraw(prizeId) < 1) { throw new Exception("Attempted to draw for prize with no instances available"); } IList <PrizeTicket> prizeTickets = GetEligiblePrizeTickets(prizeId); PrizeTicket winningTicket = null; int numberOfTickets = prizeTickets.Count(); if (numberOfTickets > 0) { int winner = _randomGenerator.Next(numberOfTickets); winningTicket = prizeTickets[winner]; InsertPrizeWinner(winningTicket.PrizeId, winningTicket.AttendeeId); } return(winningTicket); }