Beispiel #1
0
        public async Task <IActionResult> CreateTicets([FromBody] CreateTicketRequest requestData)
        {
            var response = new CreateTicetsResponse {
                TicketsCreated = false
            };

            if (DatesFromMonth.DateTo(requestData) >= DateTime.Now)
            {
                response.Message = "Jeszcze nie można przetwarzać danych z tego zakresu - miesiąc musi być zakończony.";
                return(new JsonResult(response));
            }
            if (requestData == null)
            {
                response.Message = "Błędne dane zapytania";
                return(new JsonResult(response));
            }

            if (!await CheckDataAlreadyTaken(requestData))
            {
                using (var transaction = await _context.Database.BeginTransactionAsync())
                {
                    if (requestData.TicketsGroup == "import")
                    {
                        _context.TaskTickets.AddRange(TicketsGenerator.ImportTickets(requestData));
                    }
                    else if (requestData.TicketsGroup == "export")
                    {
                        _context.TaskTickets.AddRange(TicketsGenerator.ExportTickets(requestData));
                    }

                    await _context.SaveChangesAsync();

                    await transaction.CommitAsync();
                }

                response.TicketsCreated = true;
                response.Message        = "Proces rozpoczęty!";
            }
            else
            {
                response.Message = "Dane z tego okresu były już przetwarzane lub trwa ich przetarzanie";
            }
            return(new JsonResult(response));
        }
        public void Process(TicketsTask inputData)
        {
            string algorithm = inputData.Algorithm;

            ITicketsProvider ticketsProvider = new TicketsGenerator(
                startIndex: 0,
                endIndex: 999999
                );

            IEnumerable <Ticket> tickets = ticketsProvider.GetTickets();

            ILuckyTicketResolver luckyTicketResolver = luckyTicketResolverFactory.Create(algorithm);

            var counter = new LuckyTicketsCounter(luckyTicketResolver);

            var luckyTicketsNumber = counter.Count(tickets);

            logger.LogInformation($"You have {luckyTicketsNumber} lucky tickets");
        }
Beispiel #3
0
        public void GetTickets(int startIndex, int endIndex)
        {
            // Arrange
            var ticketsGenerator = new TicketsGenerator(startIndex, endIndex);

            IEnumerable <Ticket> expectedTickets = new List <Ticket>
            {
                new Ticket(1),
                new Ticket(2),
                new Ticket(3)
            };

            // Act
            var actualTickets = ticketsGenerator.GetTickets();

            var luckyTicketComparer = new LuckyTicketEqualityComparer();

            // Assert
            Assert.Equal(expectedTickets, actualTickets, luckyTicketComparer);
        }
Beispiel #4
0
        public async Task <ServiceResponse> InsertDocumentsAsync(List <Document> documents, CreateTicketRequest createTicketRequest)
        {
            var serviceResponse = new ServiceResponse {
                Valid = true, Message = "OK"
            };
            var importTickets = TicketsGenerator.ImportTickets(createTicketRequest);

            try
            {
                using (var transaction = await _dbContext.Database.BeginTransactionAsync().ConfigureAwait(false))
                {
                    var ticketsIds = new List <int>();
                    foreach (var ticket in importTickets)
                    {
                        await _dbContext.AddAsync(ticket);

                        await _dbContext.SaveChangesAsync();

                        ticketsIds.Add(ticket.TaskTicketId);
                    }
                    int ticketId = ticketsIds[0];
                    documents.ForEach(d => d.TaskTicketId = ticketId);
                    await _dbContext.AddRangeAsync(documents);

                    await _dbContext.SaveChangesAsync();

                    await transaction.CommitAsync().ConfigureAwait(false);
                };
            }
            catch (Exception ex)
            {
                serviceResponse.Valid   = false;
                serviceResponse.Message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
            }
            return(serviceResponse);
        }