コード例 #1
0
        public (IEnumerable <TicketViewModel>, int) VisitorDailyTicket(TicketVisitorSearchModel search)
        {
            var query = Context.Tickets.Where(t => t.CreatedAt.Date == search.specificDay.Value.Date &&
                                              t.CreatedById == search.visitorId &&
                                              (search.ticketIds.Count == 0 || search.ticketIds.Contains(t.Id)) &&
                                              (search.statusIds.Count == 0 || search.statusIds.Contains(t.StatusId)) &&
                                              (search.branchIds.Count == 0 || search.branchIds.Contains(t.BranchDepartement.BranchId)) &&
                                              (search.departementIds.Count == 0 || search.departementIds.Contains(t.BranchDepartement.DepartementId)))
                        .Select(t => new TicketViewModel
            {
                Id                  = t.Id,
                CreateTime          = t.CreatedAt,
                TicketNumber        = t.TicketNumber,
                VisitorId           = t.CreatedById.Value,
                VisitorName         = t.CreatedBy.UserName,
                BranchId            = t.BranchDepartement.BranchId,
                BranchNameAR        = t.BranchDepartement.Branch.NameAR,
                BranchNameEN        = t.BranchDepartement.Branch.NameEN,
                DepartementId       = t.BranchDepartement.DepartementId,
                DepartementNameAR   = t.BranchDepartement.Departement.NameAR,
                DepartementNameEN   = t.BranchDepartement.Departement.NameEN,
                StatusId            = t.StatusId,
                StatusNameAR        = t.Status.NameAR,
                StatusNameEN        = t.Status.NameEN,
                BranchDepartementId = t.BranchDepartementId
            });
            var count = query.Count();
            var data  = query.OrderBy(c => c.Id).Skip((search.pageNumber - 1) * search.pageSize).Take(search.pageSize);

            return(data, count);
        }
コード例 #2
0
        public ActionResult VisitorDailyTickets([FromQuery] TicketVisitorSearchModel search)
        {
            int visitorId = User.GetUserId();

            search.visitorId = visitorId;
            var response = service.VisitorDailyTickets(search);

            return(Ok(response));
        }
コード例 #3
0
        public IResponse VisitorDailyTickets(TicketVisitorSearchModel search)
        {
            search.specificDay     = search.specificDay ?? DateTime.Now.AddServerTimeHours().Date;
            var(result, totalRows) = UOW.Tickets.VisitorDailyTicket(search);
            var dataListed = result.ToList();

            foreach (var ticket in dataListed)
            {
                ticket.CurrentNumber = UOW.Tickets.Find(t => t.BranchDepartementId == ticket.BranchDepartementId &&
                                                        t.CreatedAt.Date == search.specificDay && t.StatusId == 2)
                                       .Select(t => t.TicketNumber).DefaultIfEmpty(0).Max();
            }
            response.pagesTotalRows = totalRows;
            float all_pages = (float)totalRows / search.pageSize;

            response.pagesTotalNumber = (int)Math.Ceiling(all_pages);
            response.pageSize         = search.pageSize;
            response.pageNumber       = search.pageNumber;
            response.data             = dataListed;
            return(response);
        }