private RepairTicketFilter ConvertFilterDTOToFilterEntity(RepairTicket_RepairTicketFilterDTO RepairTicket_RepairTicketFilterDTO)
        {
            RepairTicketFilter RepairTicketFilter = new RepairTicketFilter();

            RepairTicketFilter.Selects   = RepairTicketSelect.ALL;
            RepairTicketFilter.Skip      = RepairTicket_RepairTicketFilterDTO.Skip;
            RepairTicketFilter.Take      = RepairTicket_RepairTicketFilterDTO.Take;
            RepairTicketFilter.OrderBy   = RepairTicket_RepairTicketFilterDTO.OrderBy;
            RepairTicketFilter.OrderType = RepairTicket_RepairTicketFilterDTO.OrderType;

            RepairTicketFilter.Id              = RepairTicket_RepairTicketFilterDTO.Id;
            RepairTicketFilter.Code            = RepairTicket_RepairTicketFilterDTO.Code;
            RepairTicketFilter.DeviceSerial    = RepairTicket_RepairTicketFilterDTO.DeviceSerial;
            RepairTicketFilter.OrderId         = RepairTicket_RepairTicketFilterDTO.OrderId;
            RepairTicketFilter.OrderCategoryId = RepairTicket_RepairTicketFilterDTO.OrderCategoryId;
            RepairTicketFilter.RepairDueDate   = RepairTicket_RepairTicketFilterDTO.RepairDueDate;
            RepairTicketFilter.ItemId          = RepairTicket_RepairTicketFilterDTO.ItemId;
            RepairTicketFilter.RejectReason    = RepairTicket_RepairTicketFilterDTO.RejectReason;
            RepairTicketFilter.DeviceState     = RepairTicket_RepairTicketFilterDTO.DeviceState;
            RepairTicketFilter.RepairStatusId  = RepairTicket_RepairTicketFilterDTO.RepairStatusId;
            RepairTicketFilter.RepairAddess    = RepairTicket_RepairTicketFilterDTO.RepairAddess;
            RepairTicketFilter.ReceiveUser     = RepairTicket_RepairTicketFilterDTO.ReceiveUser;
            RepairTicketFilter.ReceiveDate     = RepairTicket_RepairTicketFilterDTO.ReceiveDate;
            RepairTicketFilter.RepairDate      = RepairTicket_RepairTicketFilterDTO.RepairDate;
            RepairTicketFilter.ReturnDate      = RepairTicket_RepairTicketFilterDTO.ReturnDate;
            RepairTicketFilter.RepairSolution  = RepairTicket_RepairTicketFilterDTO.RepairSolution;
            RepairTicketFilter.Note            = RepairTicket_RepairTicketFilterDTO.Note;
            RepairTicketFilter.RepairCost      = RepairTicket_RepairTicketFilterDTO.RepairCost;
            RepairTicketFilter.PaymentStatusId = RepairTicket_RepairTicketFilterDTO.PaymentStatusId;
            RepairTicketFilter.CustomerId      = RepairTicket_RepairTicketFilterDTO.CustomerId;
            RepairTicketFilter.CreatorId       = RepairTicket_RepairTicketFilterDTO.CreatorId;
            RepairTicketFilter.CreatedAt       = RepairTicket_RepairTicketFilterDTO.CreatedAt;
            RepairTicketFilter.UpdatedAt       = RepairTicket_RepairTicketFilterDTO.UpdatedAt;
            return(RepairTicketFilter);
        }
        public async Task <ActionResult <int> > Count([FromBody] RepairTicket_RepairTicketFilterDTO RepairTicket_RepairTicketFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            RepairTicketFilter RepairTicketFilter = ConvertFilterDTOToFilterEntity(RepairTicket_RepairTicketFilterDTO);

            RepairTicketFilter = await RepairTicketService.ToFilter(RepairTicketFilter);

            int count = await RepairTicketService.Count(RepairTicketFilter);

            return(count);
        }
        public async Task <ActionResult> ExportTemplate([FromBody] RepairTicket_RepairTicketFilterDTO RepairTicket_RepairTicketFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            string path = "Templates/RepairTicket_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", "RepairTicket.xlsx"));
        }
        public async Task <ActionResult <List <RepairTicket_RepairTicketDTO> > > List([FromBody] RepairTicket_RepairTicketFilterDTO RepairTicket_RepairTicketFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            RepairTicketFilter RepairTicketFilter = ConvertFilterDTOToFilterEntity(RepairTicket_RepairTicketFilterDTO);

            RepairTicketFilter = await RepairTicketService.ToFilter(RepairTicketFilter);

            List <RepairTicket> RepairTickets = await RepairTicketService.List(RepairTicketFilter);

            List <RepairTicket_RepairTicketDTO> RepairTicket_RepairTicketDTOs = RepairTickets
                                                                                .Select(c => new RepairTicket_RepairTicketDTO(c)).ToList();

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

            MemoryStream memoryStream = new MemoryStream();

            using (ExcelPackage excel = new ExcelPackage(memoryStream))
            {
                #region RepairTicket
                var RepairTicketFilter = ConvertFilterDTOToFilterEntity(RepairTicket_RepairTicketFilterDTO);
                RepairTicketFilter.Skip = 0;
                RepairTicketFilter.Take = int.MaxValue;
                RepairTicketFilter      = await RepairTicketService.ToFilter(RepairTicketFilter);

                List <RepairTicket> RepairTickets = await RepairTicketService.List(RepairTicketFilter);

                var RepairTicketHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "OrderId",
                        "OrderCategoryId",
                        "RepairDueDate",
                        "ItemId",
                        "IsRejectRepair",
                        "RejectReason",
                        "DeviceState",
                        "RepairStatusId",
                        "RepairAddess",
                        "ReceiveUser",
                        "ReceiveDate",
                        "RepairDate",
                        "ReturnDate",
                        "RepairSolution",
                        "Note",
                        "RepairCost",
                        "PaymentStatusId",
                        "CustomerId",
                        "CreatorId",
                    }
                };
                List <object[]> RepairTicketData = new List <object[]>();
                for (int i = 0; i < RepairTickets.Count; i++)
                {
                    var RepairTicket = RepairTickets[i];
                    RepairTicketData.Add(new Object[]
                    {
                        RepairTicket.Id,
                        RepairTicket.Code,
                        RepairTicket.OrderId,
                        RepairTicket.OrderCategoryId,
                        RepairTicket.RepairDueDate,
                        RepairTicket.ItemId,
                        RepairTicket.IsRejectRepair,
                        RepairTicket.RejectReason,
                        RepairTicket.DeviceState,
                        RepairTicket.RepairStatusId,
                        RepairTicket.RepairAddess,
                        RepairTicket.ReceiveUser,
                        RepairTicket.ReceiveDate,
                        RepairTicket.RepairDate,
                        RepairTicket.ReturnDate,
                        RepairTicket.RepairSolution,
                        RepairTicket.Note,
                        RepairTicket.RepairCost,
                        RepairTicket.PaymentStatusId,
                        RepairTicket.CustomerId,
                        RepairTicket.CreatorId,
                    });
                }
                excel.GenerateWorksheet("RepairTicket", RepairTicketHeaders, RepairTicketData);
                #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",
                        "Department",
                        "OrganizationId",
                        "Longitude",
                        "Latitude",
                        "StatusId",
                        "RowId",
                        "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.DisplayName,
                        AppUser.Address,
                        AppUser.Email,
                        AppUser.Phone,
                        AppUser.SexId,
                        AppUser.Birthday,
                        AppUser.Avatar,
                        AppUser.Department,
                        AppUser.OrganizationId,
                        AppUser.Longitude,
                        AppUser.Latitude,
                        AppUser.StatusId,
                        AppUser.RowId,
                        AppUser.Used,
                    });
                }
                excel.GenerateWorksheet("AppUser", AppUserHeaders, AppUserData);
                #endregion
                #region Customer
                var CustomerFilter = new CustomerFilter();
                CustomerFilter.Selects   = CustomerSelect.ALL;
                CustomerFilter.OrderBy   = CustomerOrder.Id;
                CustomerFilter.OrderType = OrderType.ASC;
                CustomerFilter.Skip      = 0;
                CustomerFilter.Take      = int.MaxValue;
                List <Customer> Customers = await CustomerService.List(CustomerFilter);

                var CustomerHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "FullName",
                        "Phone",
                        "IdentificationNumber",
                        "Email",
                        "Address",
                        "StatusId",
                        "NationId",
                        "ProvinceId",
                        "DistrictId",
                        "WardId",
                        "CreatorId",
                        "OrganizationId",
                        "ImageId",
                        "ProfessionId",
                        "Used",
                    }
                };
                List <object[]> CustomerData = new List <object[]>();
                for (int i = 0; i < Customers.Count; i++)
                {
                    var Customer = Customers[i];
                    CustomerData.Add(new Object[]
                    {
                        Customer.Id,
                        Customer.Code,
                        Customer.Name,
                        Customer.Phone,
                        Customer.Email,
                        Customer.Address,
                        Customer.StatusId,
                        Customer.NationId,
                        Customer.ProvinceId,
                        Customer.DistrictId,
                        Customer.WardId,
                        Customer.ProfessionId,
                        Customer.Used,
                    });
                }
                excel.GenerateWorksheet("Customer", CustomerHeaders, CustomerData);
                #endregion
                #region Item
                var ItemFilter = new ItemFilter();
                ItemFilter.Selects   = ItemSelect.ALL;
                ItemFilter.OrderBy   = ItemOrder.Id;
                ItemFilter.OrderType = OrderType.ASC;
                ItemFilter.Skip      = 0;
                ItemFilter.Take      = int.MaxValue;
                List <Item> Items = await ItemService.List(ItemFilter);

                var ItemHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "ProductId",
                        "Code",
                        "Name",
                        "ScanCode",
                        "SalePrice",
                        "RetailPrice",
                        "StatusId",
                        "Used",
                        "RowId",
                    }
                };
                List <object[]> ItemData = new List <object[]>();
                for (int i = 0; i < Items.Count; i++)
                {
                    var Item = Items[i];
                    ItemData.Add(new Object[]
                    {
                        Item.Id,
                        Item.ProductId,
                        Item.Code,
                        Item.Name,
                        Item.ScanCode,
                        Item.SalePrice,
                        Item.RetailPrice,
                        Item.StatusId,
                        Item.Used,
                        Item.RowId,
                    });
                }
                excel.GenerateWorksheet("Item", ItemHeaders, ItemData);
                #endregion
                #region OrderCategory
                var OrderCategoryFilter = new OrderCategoryFilter();
                OrderCategoryFilter.Selects   = OrderCategorySelect.ALL;
                OrderCategoryFilter.OrderBy   = OrderCategoryOrder.Id;
                OrderCategoryFilter.OrderType = OrderType.ASC;
                OrderCategoryFilter.Skip      = 0;
                OrderCategoryFilter.Take      = int.MaxValue;
                List <OrderCategory> OrderCategorys = await OrderCategoryService.List(OrderCategoryFilter);

                var OrderCategoryHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "Name",
                    }
                };
                List <object[]> OrderCategoryData = new List <object[]>();
                for (int i = 0; i < OrderCategorys.Count; i++)
                {
                    var OrderCategory = OrderCategorys[i];
                    OrderCategoryData.Add(new Object[]
                    {
                        OrderCategory.Id,
                        OrderCategory.Code,
                        OrderCategory.Name,
                    });
                }
                excel.GenerateWorksheet("OrderCategory", OrderCategoryHeaders, OrderCategoryData);
                #endregion
                #region PaymentStatus
                var PaymentStatusFilter = new PaymentStatusFilter();
                PaymentStatusFilter.Selects   = PaymentStatusSelect.ALL;
                PaymentStatusFilter.OrderBy   = PaymentStatusOrder.Id;
                PaymentStatusFilter.OrderType = OrderType.ASC;
                PaymentStatusFilter.Skip      = 0;
                PaymentStatusFilter.Take      = int.MaxValue;
                List <PaymentStatus> PaymentStatuses = await PaymentStatusService.List(PaymentStatusFilter);

                var PaymentStatusHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "Name",
                    }
                };
                List <object[]> PaymentStatusData = new List <object[]>();
                for (int i = 0; i < PaymentStatuses.Count; i++)
                {
                    var PaymentStatus = PaymentStatuses[i];
                    PaymentStatusData.Add(new Object[]
                    {
                        PaymentStatus.Id,
                        PaymentStatus.Code,
                        PaymentStatus.Name,
                    });
                }
                excel.GenerateWorksheet("PaymentStatus", PaymentStatusHeaders, PaymentStatusData);
                #endregion
                #region RepairStatus
                var RepairStatusFilter = new RepairStatusFilter();
                RepairStatusFilter.Selects   = RepairStatusSelect.ALL;
                RepairStatusFilter.OrderBy   = RepairStatusOrder.Id;
                RepairStatusFilter.OrderType = OrderType.ASC;
                RepairStatusFilter.Skip      = 0;
                RepairStatusFilter.Take      = int.MaxValue;
                List <RepairStatus> RepairStatuses = await RepairStatusService.List(RepairStatusFilter);

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