예제 #1
0
        // List all clients with their ticket number
        public DatatablePagination <ClientsWithTicketsView> GetClientsWithTickets(PagingModel paging)
        {
            try
            {
                var clients = from c in db.Users
                              join t in db.Tickets on c.Id equals t.ClientId
                              where c.Type == UserType.Client
                              group c by c.Id into clientGroups
                              select new
                {
                    Id    = clientGroups.Key,
                    Count = clientGroups.Count(),
                };

                var clientsGroup = from u in db.Users
                                   join c in clients
                                   on u.Id equals c.Id
                                   select new ClientsWithTicketsView
                {
                    Id           = u.Id,
                    FirstName    = u.FirstName,
                    LastName     = u.LastName,
                    Email        = u.Email,
                    PhoneNumber  = u.PhoneNumber,
                    DateOfBirth  = u.DateOfBirth,
                    UserStatus   = u.UserStatus,
                    TicketsTotal = c.Count
                };

                if (clientsGroup != null)
                {
                    var user = new DatatablePagination <ClientsWithTicketsView>
                    {
                        Data        = clientsGroup.ToList(),
                        TotalRecord = clientsGroup.Count(),
                    };
                    if (!string.IsNullOrEmpty(paging.SearchValue))
                    {
                        user.Data = user.Data
                                    .Where(u => u.FirstName.ToLower().Contains(paging.SearchValue.ToLower()) ||
                                           u.LastName.ToString().Contains(paging.SearchValue.ToLower()) ||
                                           u.Email.ToString().Contains(paging.SearchValue.ToLower()) ||
                                           u.PhoneNumber.ToLower().Contains(paging.SearchValue.ToLower())).ToList();
                    }
                    user.TotalFilteredRecord = user.Data.Count();
                    //  sorting not working with me ..
                    user.Data = user.Data.OrderBy(u => u.Id).ToList();
                    user.Data = user.Data.Skip(paging.DisplayStart).Take(paging.DisplayLength).ToList();
                    return(user);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
 // List all Support Employees
 public DatatablePagination <SupportEmployeesView> GetAllEmployees(PagingModel paging)
 {
     try
     {
         var employees = from a in db.Users.Where(i => i.Type == UserType.Employee)
                         select new SupportEmployeesView()
         {
             Id          = a.Id,
             Email       = a.Email,
             FirstName   = a.FirstName,
             LastName    = a.LastName,
             DateOfBirth = a.DateOfBirth,
             PhoneNumber = a.PhoneNumber,
             UserStatus  = a.UserStatus,
             // Type = a.Type
         };
         if (employees != null)
         {
             var user = new DatatablePagination <SupportEmployeesView>
             {
                 Data        = employees.ToList(),
                 TotalRecord = employees.Count(),
             };
             if (!string.IsNullOrEmpty(paging.SearchValue))
             {
                 user.Data = user.Data
                             .Where(u => u.FirstName.ToLower().Contains(paging.SearchValue.ToLower()) ||
                                    u.LastName.ToString().Contains(paging.SearchValue.ToLower()) ||
                                    u.Email.ToString().Contains(paging.SearchValue.ToLower()) ||
                                    u.PhoneNumber.ToLower().Contains(paging.SearchValue.ToLower())).ToList();
             }
             user.TotalFilteredRecord = user.Data.Count();
             //  sorting not working with me ..
             user.Data = user.Data.OrderBy(u => u.Id).ToList();
             user.Data = user.Data.Skip(paging.DisplayStart).Take(paging.DisplayLength).ToList();
             return(user);
         }
         else
         {
             return(null);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #3
0
        // List all clients with their ticket number
        public DatatablePagination <ClientAndTicketCount> GetAllClients(PagingModel paging)
        {
            try
            {
                var all = (from u in db.Users.Where(u => u.Type == UserType.Client)
                           .Select(s => new ClientAndTicketCount
                {
                    ID = s.Id,
                    FirstName = s.FirstName,
                    LastName = s.LastName,
                    DateOfBirth = s.DateOfBirth,
                    Email = s.Email,
                    PhoneNumber = s.PhoneNumber,
                    UserStatus = s.UserStatus,
                    TicketsTotal = (db.Tickets.Where(t => t.ClientId == s.Id).Count())
                })
                           select u);
                if (all != null)
                {
                    var user = new DatatablePagination <ClientAndTicketCount>
                    {
                        Data        = all.ToList(),
                        TotalRecord = all.Count(),
                    };
                    if (!string.IsNullOrEmpty(paging.SearchValue))
                    {
                        user.Data = user.Data
                                    .Where(u => u.FirstName.ToLower().Contains(paging.SearchValue.ToLower()) ||
                                           u.LastName.ToString().Contains(paging.SearchValue.ToLower()) ||
                                           u.Email.ToString().Contains(paging.SearchValue.ToLower()) ||
                                           u.PhoneNumber.ToLower().Contains(paging.SearchValue.ToLower())).ToList();
                    }

                    user.TotalFilteredRecord = user.Data.Count();
                    //  sorting not working with me ..
                    //user.Data = user.Data.OrderBy(u => u.Id).ToList();
                    //user.Data = user.Data.Skip(paging.DisplayStart).Take(paging.DisplayLength).ToList();
                    return(user);
                }
                return(null);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #4
0
        // List all tikets with status for Manager
        public DatatablePagination <ViewTicket> GetAllTickets(int id, PagingModel paging)
        {
            try
            {
                IQueryable <ViewTicket> tickets = null;
                if (id == 0)
                {
                    tickets = from t in db.Tickets
                              join u in db.Users on t.ClientId equals u.Id
                              join e in db.Users on t.EmployeeId equals e.Id into ulist
                              from e in ulist.DefaultIfEmpty()
                              select new ViewTicket()
                    {
                        Id           = t.Id,
                        Status       = t.Status,
                        Category     = t.Category,
                        Priority     = t.Priority,
                        Title        = t.Title,
                        ClientId     = t.ClientId,
                        EmployeeId   = t.EmployeeId ?? 0,
                        OpenDate     = t.OpenDate,
                        ClosedDate   = t.ClosedDate,
                        ClosedBy     = t.ClosedBy ?? 0,
                        ClientName   = u.FirstName + " " + u.LastName,
                        EmployeeName = e.FirstName + " " + e.LastName,
                    };
                }

                else
                {
                    tickets = from t in db.Tickets.Where(i => i.EmployeeId == id || i.ClientId == id)
                              join u in db.Users on t.ClientId equals u.Id
                              join e in db.Users on t.EmployeeId equals e.Id into ulist
                              from e in ulist.DefaultIfEmpty()
                              select new ViewTicket()
                    {
                        Id           = t.Id,
                        Status       = t.Status,
                        Category     = t.Category,
                        Priority     = t.Priority,
                        Title        = t.Title,
                        OpenDate     = t.OpenDate,
                        EmployeeId   = t.EmployeeId ?? 0,
                        ClientId     = t.ClientId,
                        ClientName   = u.FirstName + " " + u.LastName,
                        EmployeeName = e.FirstName + " " + e.LastName,
                    };
                }
                if (tickets != null)
                {
                    var ticket = new DatatablePagination <ViewTicket>
                    {
                        Data        = tickets.ToList(),
                        TotalRecord = tickets.Count(),
                    };
                    if (!string.IsNullOrEmpty(paging.SearchValue))
                    {
                        ticket.Data = ticket.Data
                                      .Where(u => u.Title.ToLower().Contains(paging.SearchValue.ToLower()) ||
                                             u.Id.ToString().Contains(paging.SearchValue.ToLower()) ||
                                             u.EmployeeName.ToLower().Contains(paging.SearchValue.ToLower()) ||
                                             u.ClientName.ToLower().Contains(paging.SearchValue.ToLower())).ToList();
                    }
                    if (!string.IsNullOrEmpty(paging.FilterByStatus) ||
                        !string.IsNullOrEmpty(paging.FilterByPriority) ||
                        !string.IsNullOrEmpty(paging.FilterByCategory)
                        )
                    {
                        ticket.Data = ticket.Data.Where(u => u.Status.ToString().Contains(paging.FilterByStatus) &&
                                                        u.Priority.ToString().Contains(paging.FilterByPriority) &&
                                                        u.Category.ToString().Contains(paging.FilterByCategory)).ToList();
                    }

                    if (!string.IsNullOrEmpty(paging.StartDate) && !string.IsNullOrEmpty(paging.EndDate))
                    {
                        ticket.Data = ticket.Data.Where(x => x.OpenDate >= DateTime.Parse(paging.StartDate) && x.OpenDate <= DateTime.Parse(paging.EndDate)).ToList();
                    }
                    ticket.TotalFilteredRecord = ticket.Data.Count();
                    ticket.Data = ticket.Data.OrderByDescending(u => u.OpenDate).ToList();
                    ticket.Data = ticket.Data.Skip(paging.DisplayStart).Take(paging.DisplayLength).ToList();
                    return(ticket);
                }
                else
                {
                    return(null);
                }
            }

            catch (Exception ex)
            {
                GlobalVariable.log.Write(LogLevel.Error, ex);
                return(null);
            }
        }