public async Task <ActionResult <int> > Count([FromBody] TicketOfUser_TicketOfUserFilterDTO TicketOfUser_TicketOfUserFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            TicketOfUserFilter TicketOfUserFilter = ConvertFilterDTOToFilterEntity(TicketOfUser_TicketOfUserFilterDTO);

            TicketOfUserFilter = TicketOfUserService.ToFilter(TicketOfUserFilter);
            int count = await TicketOfUserService.Count(TicketOfUserFilter);

            return(count);
        }
        private TicketOfUserFilter ConvertFilterDTOToFilterEntity(TicketOfUser_TicketOfUserFilterDTO TicketOfUser_TicketOfUserFilterDTO)
        {
            TicketOfUserFilter TicketOfUserFilter = new TicketOfUserFilter();

            TicketOfUserFilter.Selects   = TicketOfUserSelect.ALL;
            TicketOfUserFilter.Skip      = TicketOfUser_TicketOfUserFilterDTO.Skip;
            TicketOfUserFilter.Take      = TicketOfUser_TicketOfUserFilterDTO.Take;
            TicketOfUserFilter.OrderBy   = TicketOfUser_TicketOfUserFilterDTO.OrderBy;
            TicketOfUserFilter.OrderType = TicketOfUser_TicketOfUserFilterDTO.OrderType;

            TicketOfUserFilter.Id             = TicketOfUser_TicketOfUserFilterDTO.Id;
            TicketOfUserFilter.Notes          = TicketOfUser_TicketOfUserFilterDTO.Notes;
            TicketOfUserFilter.UserId         = TicketOfUser_TicketOfUserFilterDTO.UserId;
            TicketOfUserFilter.TicketId       = TicketOfUser_TicketOfUserFilterDTO.TicketId;
            TicketOfUserFilter.TicketStatusId = TicketOfUser_TicketOfUserFilterDTO.TicketStatusId;
            TicketOfUserFilter.CreatedAt      = TicketOfUser_TicketOfUserFilterDTO.CreatedAt;
            TicketOfUserFilter.UpdatedAt      = TicketOfUser_TicketOfUserFilterDTO.UpdatedAt;
            return(TicketOfUserFilter);
        }
        public async Task <ActionResult <List <TicketOfUser_TicketOfUserDTO> > > List([FromBody] TicketOfUser_TicketOfUserFilterDTO TicketOfUser_TicketOfUserFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            TicketOfUserFilter TicketOfUserFilter = ConvertFilterDTOToFilterEntity(TicketOfUser_TicketOfUserFilterDTO);

            TicketOfUserFilter = TicketOfUserService.ToFilter(TicketOfUserFilter);
            List <TicketOfUser> TicketOfUsers = await TicketOfUserService.List(TicketOfUserFilter);

            List <TicketOfUser_TicketOfUserDTO> TicketOfUser_TicketOfUserDTOs = TicketOfUsers
                                                                                .Select(c => new TicketOfUser_TicketOfUserDTO(c)).ToList();

            return(TicketOfUser_TicketOfUserDTOs);
        }
        public async Task <FileResult> ExportTemplate([FromBody] TicketOfUser_TicketOfUserFilterDTO TicketOfUser_TicketOfUserFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            MemoryStream memoryStream = new MemoryStream();

            using (ExcelPackage excel = new ExcelPackage(memoryStream))
            {
                #region TicketOfUser
                var TicketOfUserHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Notes",
                        "UserId",
                        "TicketId",
                        "TicketStatusId",
                    }
                };
                List <object[]> TicketOfUserData = new List <object[]>();
                excel.GenerateWorksheet("TicketOfUser", TicketOfUserHeaders, TicketOfUserData);
                #endregion

                #region Ticket
                var TicketFilter = new TicketFilter();
                TicketFilter.Selects   = TicketSelect.ALL;
                TicketFilter.OrderBy   = TicketOrder.Id;
                TicketFilter.OrderType = OrderType.ASC;
                TicketFilter.Skip      = 0;
                TicketFilter.Take      = int.MaxValue;
                List <Ticket> Tickets = await TicketService.List(TicketFilter);

                var TicketHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Name",
                        "Phone",
                        "CustomerId",
                        "UserId",
                        "ProductId",
                        "ReceiveDate",
                        "ProcessDate",
                        "FinishDate",
                        "Subject",
                        "Content",
                        "TicketIssueLevelId",
                        "TicketPriorityId",
                        "TicketStatusId",
                        "TicketSourceId",
                        "TicketNumber",
                        "DepartmentId",
                        "RelatedTicketId",
                        "SLA",
                        "RelatedCallLogId",
                        "ResponseMethodId",
                        "StatusId",
                        "Used",
                    }
                };
                List <object[]> TicketData = new List <object[]>();
                for (int i = 0; i < Tickets.Count; i++)
                {
                    var Ticket = Tickets[i];
                    TicketData.Add(new Object[]
                    {
                        Ticket.Id,
                        Ticket.Name,
                        Ticket.Phone,
                        Ticket.CustomerId,
                        Ticket.UserId,
                        Ticket.ProductId,
                        Ticket.ReceiveDate,
                        Ticket.ProcessDate,
                        Ticket.FinishDate,
                        Ticket.Subject,
                        Ticket.Content,
                        Ticket.TicketIssueLevelId,
                        Ticket.TicketPriorityId,
                        Ticket.TicketStatusId,
                        Ticket.TicketSourceId,
                        Ticket.TicketNumber,
                        Ticket.DepartmentId,
                        Ticket.RelatedTicketId,
                        Ticket.SLA,
                        Ticket.RelatedCallLogId,
                        Ticket.ResponseMethodId,
                        Ticket.StatusId,
                        Ticket.Used,
                    });
                }
                excel.GenerateWorksheet("Ticket", TicketHeaders, TicketData);
                #endregion
                #region TicketStatus
                var TicketStatusFilter = new TicketStatusFilter();
                TicketStatusFilter.Selects   = TicketStatusSelect.ALL;
                TicketStatusFilter.OrderBy   = TicketStatusOrder.Id;
                TicketStatusFilter.OrderType = OrderType.ASC;
                TicketStatusFilter.Skip      = 0;
                TicketStatusFilter.Take      = int.MaxValue;
                List <TicketStatus> TicketStatuses = await TicketStatusService.List(TicketStatusFilter);

                var TicketStatusHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Name",
                        "OrderNumber",
                        "ColorCode",
                        "StatusId",
                        "Used",
                    }
                };
                List <object[]> TicketStatusData = new List <object[]>();
                for (int i = 0; i < TicketStatuses.Count; i++)
                {
                    var TicketStatus = TicketStatuses[i];
                    TicketStatusData.Add(new Object[]
                    {
                        TicketStatus.Id,
                        TicketStatus.Name,
                        TicketStatus.OrderNumber,
                        TicketStatus.ColorCode,
                        TicketStatus.StatusId,
                        TicketStatus.Used,
                    });
                }
                excel.GenerateWorksheet("TicketStatus", TicketStatusHeaders, TicketStatusData);
                #endregion
                #region AppUser
                var AppUserFilter = new AppUserFilter();
                AppUserFilter.Selects   = AppUserSelect.ALL;
                AppUserFilter.OrderBy   = AppUserOrder.Id;
                AppUserFilter.OrderType = OrderType.ASC;
                AppUserFilter.Skip      = 0;
                AppUserFilter.Take      = int.MaxValue;
                List <AppUser> AppUsers = await AppUserService.List(AppUserFilter);

                var AppUserHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Username",
                        "DisplayName",
                        "Address",
                        "Email",
                        "Phone",
                        "SexId",
                        "Birthday",
                        "Avatar",
                        "PositionId",
                        "Department",
                        "OrganizationId",
                        "ProvinceId",
                        "Longitude",
                        "Latitude",
                        "StatusId",
                    }
                };
                List <object[]> AppUserData = new List <object[]>();
                for (int i = 0; i < AppUsers.Count; i++)
                {
                    var AppUser = AppUsers[i];
                    AppUserData.Add(new Object[]
                    {
                        AppUser.Id,
                        AppUser.Username,
                        AppUser.DisplayName,
                        AppUser.Address,
                        AppUser.Email,
                        AppUser.Phone,
                        AppUser.SexId,
                        AppUser.Birthday,
                        AppUser.Avatar,
                        AppUser.PositionId,
                        AppUser.Department,
                        AppUser.OrganizationId,
                        AppUser.ProvinceId,
                        AppUser.Longitude,
                        AppUser.Latitude,
                        AppUser.StatusId,
                    });
                }
                excel.GenerateWorksheet("AppUser", AppUserHeaders, AppUserData);
                #endregion
                excel.Save();
            }
            return(File(memoryStream.ToArray(), "application/octet-stream", "TicketOfUser.xlsx"));
        }