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

            PlaceCheckingFilter PlaceCheckingFilter = ConvertFilterDTOToFilterEntity(PlaceChecking_PlaceCheckingFilterDTO);

            PlaceCheckingFilter = await PlaceCheckingService.ToFilter(PlaceCheckingFilter);

            int count = await PlaceCheckingService.Count(PlaceCheckingFilter);

            return(count);
        }
        private PlaceCheckingFilter ConvertFilterDTOToFilterEntity(PlaceChecking_PlaceCheckingFilterDTO PlaceChecking_PlaceCheckingFilterDTO)
        {
            PlaceCheckingFilter PlaceCheckingFilter = new PlaceCheckingFilter();

            PlaceCheckingFilter.Selects   = PlaceCheckingSelect.ALL;
            PlaceCheckingFilter.Skip      = PlaceChecking_PlaceCheckingFilterDTO.Skip;
            PlaceCheckingFilter.Take      = PlaceChecking_PlaceCheckingFilterDTO.Take;
            PlaceCheckingFilter.OrderBy   = PlaceChecking_PlaceCheckingFilterDTO.OrderBy;
            PlaceCheckingFilter.OrderType = PlaceChecking_PlaceCheckingFilterDTO.OrderType;

            PlaceCheckingFilter.Id                    = PlaceChecking_PlaceCheckingFilterDTO.Id;
            PlaceCheckingFilter.AppUserId             = PlaceChecking_PlaceCheckingFilterDTO.AppUserId;
            PlaceCheckingFilter.PlaceId               = PlaceChecking_PlaceCheckingFilterDTO.PlaceId;
            PlaceCheckingFilter.PlaceCheckingStatusId = PlaceChecking_PlaceCheckingFilterDTO.PlaceCheckingStatusId;
            PlaceCheckingFilter.CheckInAt             = PlaceChecking_PlaceCheckingFilterDTO.CheckInAt;
            PlaceCheckingFilter.CheckOutAt            = PlaceChecking_PlaceCheckingFilterDTO.CheckOutAt;
            return(PlaceCheckingFilter);
        }
        public async Task <ActionResult> ExportTemplate([FromBody] PlaceChecking_PlaceCheckingFilterDTO PlaceChecking_PlaceCheckingFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            string path = "Templates/PlaceChecking_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", "PlaceChecking.xlsx"));
        }
        public async Task <ActionResult <List <PlaceChecking_PlaceCheckingDTO> > > List([FromBody] PlaceChecking_PlaceCheckingFilterDTO PlaceChecking_PlaceCheckingFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            PlaceCheckingFilter PlaceCheckingFilter = ConvertFilterDTOToFilterEntity(PlaceChecking_PlaceCheckingFilterDTO);

            PlaceCheckingFilter = await PlaceCheckingService.ToFilter(PlaceCheckingFilter);

            List <PlaceChecking> PlaceCheckings = await PlaceCheckingService.List(PlaceCheckingFilter);

            List <PlaceChecking_PlaceCheckingDTO> PlaceChecking_PlaceCheckingDTOs = PlaceCheckings
                                                                                    .Select(c => new PlaceChecking_PlaceCheckingDTO(c)).ToList();

            return(PlaceChecking_PlaceCheckingDTOs);
        }
        public async Task <ActionResult> Export([FromBody] PlaceChecking_PlaceCheckingFilterDTO PlaceChecking_PlaceCheckingFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            MemoryStream memoryStream = new MemoryStream();

            using (ExcelPackage excel = new ExcelPackage(memoryStream))
            {
                #region PlaceChecking
                var PlaceCheckingFilter = ConvertFilterDTOToFilterEntity(PlaceChecking_PlaceCheckingFilterDTO);
                PlaceCheckingFilter.Skip = 0;
                PlaceCheckingFilter.Take = int.MaxValue;
                PlaceCheckingFilter      = await PlaceCheckingService.ToFilter(PlaceCheckingFilter);

                List <PlaceChecking> PlaceCheckings = await PlaceCheckingService.List(PlaceCheckingFilter);

                var PlaceCheckingHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "AppUserId",
                        "PlaceId",
                        "PlaceCheckingStatusId",
                        "CheckInAt",
                        "CheckOutAt",
                    }
                };
                List <object[]> PlaceCheckingData = new List <object[]>();
                for (int i = 0; i < PlaceCheckings.Count; i++)
                {
                    var PlaceChecking = PlaceCheckings[i];
                    PlaceCheckingData.Add(new Object[]
                    {
                        PlaceChecking.Id,
                        PlaceChecking.AppUserId,
                        PlaceChecking.PlaceId,
                        PlaceChecking.PlaceCheckingStatusId,
                        PlaceChecking.CheckInAt,
                        PlaceChecking.CheckOutAt,
                    });
                }
                excel.GenerateWorksheet("PlaceChecking", PlaceCheckingHeaders, PlaceCheckingData);
                #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",
                        "Password",
                        "DisplayName",
                        "Email",
                        "Phone",
                        "Used",
                    }
                };
                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 Place
                var PlaceFilter = new PlaceFilter();
                PlaceFilter.Selects   = PlaceSelect.ALL;
                PlaceFilter.OrderBy   = PlaceOrder.Id;
                PlaceFilter.OrderType = OrderType.ASC;
                PlaceFilter.Skip      = 0;
                PlaceFilter.Take      = int.MaxValue;
                List <Place> Places = await PlaceService.List(PlaceFilter);

                var PlaceHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Name",
                        "PlaceGroupId",
                        "Radius",
                        "Latitude",
                        "Longtitude",
                    }
                };
                List <object[]> PlaceData = new List <object[]>();
                for (int i = 0; i < Places.Count; i++)
                {
                    var Place = Places[i];
                    PlaceData.Add(new Object[]
                    {
                        Place.Id,
                        Place.Name,
                        Place.PlaceGroupId,
                        Place.Radius,
                        Place.Latitude,
                        Place.Longtitude,
                    });
                }
                excel.GenerateWorksheet("Place", PlaceHeaders, PlaceData);
                #endregion
                #region CheckingStatus
                var CheckingStatusFilter = new CheckingStatusFilter();
                CheckingStatusFilter.Selects   = CheckingStatusSelect.ALL;
                CheckingStatusFilter.OrderBy   = CheckingStatusOrder.Id;
                CheckingStatusFilter.OrderType = OrderType.ASC;
                CheckingStatusFilter.Skip      = 0;
                CheckingStatusFilter.Take      = int.MaxValue;
                List <CheckingStatus> CheckingStatuses = await CheckingStatusService.List(CheckingStatusFilter);

                var CheckingStatusHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "Name",
                    }
                };
                List <object[]> CheckingStatusData = new List <object[]>();
                for (int i = 0; i < CheckingStatuses.Count; i++)
                {
                    var CheckingStatus = CheckingStatuses[i];
                    CheckingStatusData.Add(new Object[]
                    {
                        CheckingStatus.Id,
                        CheckingStatus.Code,
                        CheckingStatus.Name,
                    });
                }
                excel.GenerateWorksheet("CheckingStatus", CheckingStatusHeaders, CheckingStatusData);
                #endregion
                excel.Save();
            }
            return(File(memoryStream.ToArray(), "application/octet-stream", "PlaceChecking.xlsx"));
        }