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

            AppUserFilter AppUserFilter = ConvertFilterDTOToFilterEntity(AppUser_AppUserFilterDTO);
            int           count         = await AppUserService.Count(AppUserFilter);

            return(count);
        }
        public async Task <ActionResult <List <AppUser_AppUserDTO> > > List([FromBody] AppUser_AppUserFilterDTO AppUser_AppUserFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            AppUserFilter  AppUserFilter = ConvertFilterDTOToFilterEntity(AppUser_AppUserFilterDTO);
            List <AppUser> AppUsers      = await AppUserService.List(AppUserFilter);

            List <AppUser_AppUserDTO> AppUser_AppUserDTOs = AppUsers
                                                            .Select(c => new AppUser_AppUserDTO(c)).ToList();

            return(AppUser_AppUserDTOs);
        }
        private AppUserFilter ConvertFilterDTOToFilterEntity(AppUser_AppUserFilterDTO AppUser_AppUserFilterDTO)
        {
            AppUserFilter AppUserFilter = new AppUserFilter();

            AppUserFilter.Selects   = AppUserSelect.ALL;
            AppUserFilter.Skip      = AppUser_AppUserFilterDTO.Skip;
            AppUserFilter.Take      = AppUser_AppUserFilterDTO.Take;
            AppUserFilter.OrderBy   = AppUser_AppUserFilterDTO.OrderBy;
            AppUserFilter.OrderType = AppUser_AppUserFilterDTO.OrderType;

            AppUserFilter.Id          = AppUser_AppUserFilterDTO.Id;
            AppUserFilter.Username    = AppUser_AppUserFilterDTO.Username;
            AppUserFilter.Password    = AppUser_AppUserFilterDTO.Password;
            AppUserFilter.DisplayName = AppUser_AppUserFilterDTO.DisplayName;
            AppUserFilter.Email       = AppUser_AppUserFilterDTO.Email;
            AppUserFilter.Phone       = AppUser_AppUserFilterDTO.Phone;
            AppUserFilter.CreatedAt   = AppUser_AppUserFilterDTO.CreatedAt;
            AppUserFilter.UpdatedAt   = AppUser_AppUserFilterDTO.UpdatedAt;
            return(AppUserFilter);
        }
        public async Task <ActionResult> ExportTemplate([FromBody] AppUser_AppUserFilterDTO AppUser_AppUserFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            string path = "Templates/AppUser_Template.xlsx";

            byte[]       arr    = System.IO.File.ReadAllBytes(path);
            MemoryStream input  = new MemoryStream(arr);
            MemoryStream output = new MemoryStream();
            dynamic      Data   = new ExpandoObject();

            using (var document = StaticParams.DocumentFactory.Open(input, output, "xlsx"))
            {
                document.Process(Data);
            };
            return(File(output.ToArray(), "application/octet-stream", "AppUser.xlsx"));
        }
        public async Task <ActionResult> Export([FromBody] AppUser_AppUserFilterDTO AppUser_AppUserFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            MemoryStream memoryStream = new MemoryStream();

            using (ExcelPackage excel = new ExcelPackage(memoryStream))
            {
                #region AppUser
                var AppUserFilter = ConvertFilterDTOToFilterEntity(AppUser_AppUserFilterDTO);
                AppUserFilter.Skip = 0;
                AppUserFilter.Take = int.MaxValue;
                List <AppUser> AppUsers = await AppUserService.List(AppUserFilter);

                var AppUserHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Username",
                        "Password",
                        "DisplayName",
                        "Email",
                        "Phone",
                    }
                };
                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.Password,
                        AppUser.DisplayName,
                        AppUser.Email,
                        AppUser.Phone,
                    });
                }
                excel.GenerateWorksheet("AppUser", AppUserHeaders, AppUserData);
                #endregion

                #region LocationLog
                var LocationLogFilter = new LocationLogFilter();
                LocationLogFilter.Selects   = LocationLogSelect.ALL;
                LocationLogFilter.OrderBy   = LocationLogOrder.Id;
                LocationLogFilter.OrderType = OrderType.ASC;
                LocationLogFilter.Skip      = 0;
                LocationLogFilter.Take      = int.MaxValue;
                List <LocationLog> LocationLogs = await LocationLogService.List(LocationLogFilter);

                var LocationLogHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "PreviousId",
                        "AppUserId",
                        "Latitude",
                        "Longtitude",
                        "UpdateInterval",
                    }
                };
                List <object[]> LocationLogData = new List <object[]>();
                for (int i = 0; i < LocationLogs.Count; i++)
                {
                    var LocationLog = LocationLogs[i];
                    LocationLogData.Add(new Object[]
                    {
                        LocationLog.Id,
                        LocationLog.PreviousId,
                        LocationLog.AppUserId,
                        LocationLog.Latitude,
                        LocationLog.Longtitude,
                        LocationLog.UpdateInterval,
                    });
                }
                excel.GenerateWorksheet("LocationLog", LocationLogHeaders, LocationLogData);
                #endregion
                excel.Save();
            }
            return(File(memoryStream.ToArray(), "application/octet-stream", "AppUser.xlsx"));
        }