Beispiel #1
0
 public IEnumerable <TicketReportDTO> GetTicketsReport(Period period)
 {
     using (var scope = _scopeFactory.CreateScope())
     {
         var db = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
         List <TicketReportDTO> ticketReportDTOs = new List <TicketReportDTO>();
         var tickets = (from ticket in db.Ticket
                        where ticket.CreateTime.CompareTo(period.startTime.ToLocalTime()) > 0 &&
                        ticket.CreateTime.CompareTo(period.endTime.ToLocalTime()) < 0
                        select ticket)
                       .Include(ticket => ticket.TicketState)
                       .Include(ticket => ticket.Queue)
                       .Include(ticket => ticket.TicketPriority)
                       .ToList();
         foreach (var ticket in tickets)
         {
             TicketReportDTO ticketReportDTO = new TicketReportDTO();
             ticketReportDTO.TN             = ticket.Tn;
             ticketReportDTO.State          = ticket.TicketState.Name;
             ticketReportDTO.CreateTime     = ticket.CreateTime;
             ticketReportDTO.Client         = ticket.CustomerId;
             ticketReportDTO.TicketPriority = ticket.TicketPriority.Name;
             var dFields = GetTTDynamicFields(ticket.Id);
             foreach (var field in dFields)
             {
                 typeof(TicketReportDTO).GetProperty(field.Key)?.SetValue(ticketReportDTO, field.Value);
             }
             ticketReportDTOs.Add(ticketReportDTO);
         }
         return(ticketReportDTOs);
     }
 }
Beispiel #2
0
        //Category
        private bool IsTicketDTOValid(TicketReportDTO ticket, Filters filters)
        {
            var zones        = filters.Zones;
            var types        = filters.Types;
            var states       = filters.States;
            var initiators   = filters.Initiators;
            var natInts      = filters.NatInts;
            var priorities   = filters.Priorities;
            var directions   = filters.Directions;
            var catogories   = filters.Categories;
            var problemSides = filters.ProblemSides;

            if (zones != null && zones.Length > 0 && zones.Contains(ticket.Zone) == false)
            {
                return(false);
            }
            if (types != null && types.Length > 0 && types.Contains(ticket.Type) == false)
            {
                return(false);
            }
            if (states != null && states.Length > 0 && states.Contains(ticket.State) == false)
            {
                return(false);
            }
            if (initiators != null && initiators.Length > 0 && initiators.Contains(ticket.Initiator) == false)
            {
                return(false);
            }
            if (natInts != null && natInts.Length > 0 && natInts.Contains(ticket.NatInt) == false)
            {
                return(false);
            }
            if (priorities != null && priorities.Length > 0 && priorities.Contains(ticket.TicketPriority) == false)
            {
                return(false);
            }
            if (directions != null && directions.Length > 0 && directions.Contains(ticket.Direction) == false)
            {
                return(false);
            }
            if (catogories != null && catogories.Length > 0 && catogories.Contains(ticket.Category) == false)
            {
                return(false);
            }
            if (problemSides != null && problemSides.Length > 0 && problemSides.Contains(ticket.ProblemSide) == false)
            {
                return(false);
            }
            return(true);
        }
Beispiel #3
0
        public Report GetFilteredTicketsReportBulk(Filters filters)
        {
            using (var scope = _scopeFactory.CreateScope())
            {
                var db = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
                List <TicketReportDTO> ticketReportDTOs = new List <TicketReportDTO>();
                var tickets = (from ticket in db.Ticket
                               where ticket.CreateTime.CompareTo(filters.Period.startTime) > 0 &&
                               ticket.CreateTime.CompareTo(filters.Period.endTime) < 0
                               select ticket)
                              .Include(ticket => ticket.TicketState)
                              .Include(ticket => ticket.Queue)
                              .Include(ticket => ticket.TicketPriority)
                              .ToList().Where(t => !t.Queue.Name.Equals("Trash"));

                var ttsDynamicFields = GetTTDynamicFieldsBulk((from ticket in tickets select ticket.Id).ToList());

                FilteringItems filteringItems = new FilteringItems();

                var zones       = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("Zone").Distinct().ToList();
                var types       = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("Type").Distinct().ToList();
                var direction   = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("Direction").Distinct().ToList();
                var natInt      = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("NatInt").Distinct().ToList();
                var initiator   = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("Initiator").Distinct().ToList();
                var category    = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("Category").Distinct().ToList();
                var problemSide = ttsDynamicFields.Select(p => p.Value).ToList().SelectValues("ProblemSide").Distinct().ToList();



                filteringItems.States           = tickets.Select(ticket => ticket.TicketState.Name).Distinct().OrderByDescending(state => state).toSelectItems();
                filteringItems.TicketPriorities = tickets.Select(ticket => ticket.TicketPriority.Name).Distinct().OrderByDescending(ticketPriority => ticketPriority).toSelectItems();
                filteringItems.Zones            = zones.Count > 0 ? zones.toSelectItems() : null;
                filteringItems.Types            = types.Count > 0 ? types.toSelectItems() : null;
                filteringItems.Directions       = direction.Count > 0 ? direction.toSelectItems() : null;
                filteringItems.NatInts          = natInt.Count > 0 ? natInt.toSelectItems() : null;
                filteringItems.Initiators       = initiator.Count > 0 ? initiator.toSelectItems() : null;
                filteringItems.Categories       = category.Count > 0 ? category.toSelectItems() : null;
                filteringItems.ProblemSides     = problemSide.Count > 0 ? problemSide.toSelectItems() : null;

                foreach (var ticket in tickets)
                {
                    TicketReportDTO ticketReportDTO = new TicketReportDTO();
                    ticketReportDTO.TN             = ticket.Tn;
                    ticketReportDTO.State          = ticket.TicketState.Name;
                    ticketReportDTO.CreateTime     = ticket.CreateTime;
                    ticketReportDTO.Client         = ticket.CustomerId;
                    ticketReportDTO.TicketPriority = ticket.TicketPriority.Name;
                    var dFields = ttsDynamicFields[ticket.Id];
                    if (dFields.Count > 0)
                    {
                        foreach (var field in dFields)
                        {
                            typeof(TicketReportDTO).GetProperty(field.Key)?.SetValue(ticketReportDTO, !field.Key.Equals("CloseTime") ? field.Value : DateTime.Parse(field.Value));
                        }
                    }
                    if (IsTicketDTOValid(ticketReportDTO, filters))
                    {
                        ticketReportDTOs.Add(ticketReportDTO);
                    }
                }

                return(new Report()
                {
                    ticketReportDTOs = ticketReportDTOs.OrderByDescending(ticket => ticket.CreateTime),
                    filteringItems = filteringItems
                });
            }
        }