Beispiel #1
0
        public async Task <int> Count(CustomerFeedbackTypeFilter filter)
        {
            IQueryable <CustomerFeedbackTypeDAO> CustomerFeedbackTypes = DataContext.CustomerFeedbackType.AsNoTracking();

            CustomerFeedbackTypes = DynamicFilter(CustomerFeedbackTypes, filter);
            return(await CustomerFeedbackTypes.CountAsync());
        }
        public async Task <ActionResult <List <CustomerFeedback_CustomerFeedbackTypeDTO> > > FilterListCustomerFeedbackType([FromBody] CustomerFeedback_CustomerFeedbackTypeFilterDTO CustomerFeedback_CustomerFeedbackTypeFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            CustomerFeedbackTypeFilter CustomerFeedbackTypeFilter = new CustomerFeedbackTypeFilter();

            CustomerFeedbackTypeFilter.Skip      = 0;
            CustomerFeedbackTypeFilter.Take      = int.MaxValue;
            CustomerFeedbackTypeFilter.Take      = 20;
            CustomerFeedbackTypeFilter.OrderBy   = CustomerFeedbackTypeOrder.Id;
            CustomerFeedbackTypeFilter.OrderType = OrderType.ASC;
            CustomerFeedbackTypeFilter.Selects   = CustomerFeedbackTypeSelect.ALL;

            List <CustomerFeedbackType> CustomerFeedbackTypes = await CustomerFeedbackTypeService.List(CustomerFeedbackTypeFilter);

            List <CustomerFeedback_CustomerFeedbackTypeDTO> CustomerFeedback_CustomerFeedbackTypeDTOs = CustomerFeedbackTypes
                                                                                                        .Select(x => new CustomerFeedback_CustomerFeedbackTypeDTO(x)).ToList();

            return(CustomerFeedback_CustomerFeedbackTypeDTOs);
        }
        public async Task <List <CustomerFeedbackType> > List(CustomerFeedbackTypeFilter CustomerFeedbackTypeFilter)
        {
            try
            {
                List <CustomerFeedbackType> CustomerFeedbackTypes = await UOW.CustomerFeedbackTypeRepository.List(CustomerFeedbackTypeFilter);

                return(CustomerFeedbackTypes);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(CustomerFeedbackTypeService));
            }
            return(null);
        }
        public async Task <int> Count(CustomerFeedbackTypeFilter CustomerFeedbackTypeFilter)
        {
            try
            {
                int result = await UOW.CustomerFeedbackTypeRepository.Count(CustomerFeedbackTypeFilter);

                return(result);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(CustomerFeedbackTypeService));
            }
            return(0);
        }
Beispiel #5
0
        public async Task <List <CustomerFeedbackType> > List(CustomerFeedbackTypeFilter filter)
        {
            if (filter == null)
            {
                return(new List <CustomerFeedbackType>());
            }
            IQueryable <CustomerFeedbackTypeDAO> CustomerFeedbackTypeDAOs = DataContext.CustomerFeedbackType.AsNoTracking();

            CustomerFeedbackTypeDAOs = DynamicFilter(CustomerFeedbackTypeDAOs, filter);
            CustomerFeedbackTypeDAOs = DynamicOrder(CustomerFeedbackTypeDAOs, filter);
            List <CustomerFeedbackType> CustomerFeedbackTypes = await DynamicSelect(CustomerFeedbackTypeDAOs, filter);

            return(CustomerFeedbackTypes);
        }
Beispiel #6
0
        public async Task <ActionResult> Export([FromBody] CustomerFeedback_CustomerFeedbackFilterDTO CustomerFeedback_CustomerFeedbackFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            MemoryStream memoryStream = new MemoryStream();

            using (ExcelPackage excel = new ExcelPackage(memoryStream))
            {
                #region CustomerFeedback
                var CustomerFeedbackFilter = ConvertFilterDTOToFilterEntity(CustomerFeedback_CustomerFeedbackFilterDTO);
                CustomerFeedbackFilter.Skip = 0;
                CustomerFeedbackFilter.Take = int.MaxValue;
                CustomerFeedbackFilter      = await CustomerFeedbackService.ToFilter(CustomerFeedbackFilter);

                List <CustomerFeedback> CustomerFeedbacks = await CustomerFeedbackService.List(CustomerFeedbackFilter);

                var CustomerFeedbackHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "IsSystemCustomer",
                        "CustomerId",
                        "FullName",
                        "Email",
                        "PhoneNumber",
                        "CustomerFeedbackTypeId",
                        "Title",
                        "SendDate",
                        "Content",
                        "StatusId",
                    }
                };
                List <object[]> CustomerFeedbackData = new List <object[]>();
                for (int i = 0; i < CustomerFeedbacks.Count; i++)
                {
                    var CustomerFeedback = CustomerFeedbacks[i];
                    CustomerFeedbackData.Add(new Object[]
                    {
                        CustomerFeedback.Id,
                        CustomerFeedback.IsSystemCustomer,
                        CustomerFeedback.CustomerId,
                        CustomerFeedback.FullName,
                        CustomerFeedback.Email,
                        CustomerFeedback.PhoneNumber,
                        CustomerFeedback.CustomerFeedbackTypeId,
                        CustomerFeedback.Title,
                        CustomerFeedback.SendDate,
                        CustomerFeedback.Content,
                        CustomerFeedback.StatusId,
                    });
                }
                excel.GenerateWorksheet("CustomerFeedback", CustomerFeedbackHeaders, CustomerFeedbackData);
                #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",
                        "Name",
                        "Phone",
                        "Address",
                        "NationId",
                        "ProvinceId",
                        "DistrictId",
                        "WardId",
                        "CustomerTypeId",
                        "Birthday",
                        "Email",
                        "ProfessionId",
                        "CustomerResourceId",
                        "SexId",
                        "StatusId",
                        "CompanyId",
                        "ParentCompanyId",
                        "TaxCode",
                        "Fax",
                        "Website",
                        "NumberOfEmployee",
                        "BusinessTypeId",
                        "Investment",
                        "RevenueAnnual",
                        "IsSupplier",
                        "Descreption",
                        "Used",
                        "RowId",
                    }
                };
                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.Address,
                        Customer.NationId,
                        Customer.ProvinceId,
                        Customer.DistrictId,
                        Customer.WardId,
                        Customer.CustomerTypeId,
                        Customer.Birthday,
                        Customer.Email,
                        Customer.ProfessionId,
                        Customer.CustomerResourceId,
                        Customer.SexId,
                        Customer.StatusId,
                        Customer.CompanyId,
                        Customer.ParentCompanyId,
                        Customer.TaxCode,
                        Customer.Fax,
                        Customer.Website,
                        Customer.NumberOfEmployee,
                        Customer.BusinessTypeId,
                        Customer.Investment,
                        Customer.RevenueAnnual,
                        Customer.IsSupplier,
                        Customer.Descreption,
                        Customer.Used,
                        Customer.RowId,
                    });
                }
                excel.GenerateWorksheet("Customer", CustomerHeaders, CustomerData);
                #endregion
                #region CustomerFeedbackType
                var CustomerFeedbackTypeFilter = new CustomerFeedbackTypeFilter();
                CustomerFeedbackTypeFilter.Selects   = CustomerFeedbackTypeSelect.ALL;
                CustomerFeedbackTypeFilter.OrderBy   = CustomerFeedbackTypeOrder.Id;
                CustomerFeedbackTypeFilter.OrderType = OrderType.ASC;
                CustomerFeedbackTypeFilter.Skip      = 0;
                CustomerFeedbackTypeFilter.Take      = int.MaxValue;
                List <CustomerFeedbackType> CustomerFeedbackTypes = await CustomerFeedbackTypeService.List(CustomerFeedbackTypeFilter);

                var CustomerFeedbackTypeHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "Name",
                    }
                };
                List <object[]> CustomerFeedbackTypeData = new List <object[]>();
                for (int i = 0; i < CustomerFeedbackTypes.Count; i++)
                {
                    var CustomerFeedbackType = CustomerFeedbackTypes[i];
                    CustomerFeedbackTypeData.Add(new Object[]
                    {
                        CustomerFeedbackType.Id,
                        CustomerFeedbackType.Code,
                        CustomerFeedbackType.Name,
                    });
                }
                excel.GenerateWorksheet("CustomerFeedbackType", CustomerFeedbackTypeHeaders, CustomerFeedbackTypeData);
                #endregion
                #region Status
                var StatusFilter = new StatusFilter();
                StatusFilter.Selects   = StatusSelect.ALL;
                StatusFilter.OrderBy   = StatusOrder.Id;
                StatusFilter.OrderType = OrderType.ASC;
                StatusFilter.Skip      = 0;
                StatusFilter.Take      = int.MaxValue;
                List <Status> Statuses = await StatusService.List(StatusFilter);

                var StatusHeaders = new List <string[]>()
                {
                    new string[] {
                        "Id",
                        "Code",
                        "Name",
                    }
                };
                List <object[]> StatusData = new List <object[]>();
                for (int i = 0; i < Statuses.Count; i++)
                {
                    var Status = Statuses[i];
                    StatusData.Add(new Object[]
                    {
                        Status.Id,
                        Status.Code,
                        Status.Name,
                    });
                }
                excel.GenerateWorksheet("Status", StatusHeaders, StatusData);
                #endregion
                excel.Save();
            }
            return(File(memoryStream.ToArray(), "application/octet-stream", "CustomerFeedback.xlsx"));
        }
Beispiel #7
0
        public async Task <ActionResult> Import(IFormFile file)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            CustomerFilter CustomerFilter = new CustomerFilter
            {
                Skip    = 0,
                Take    = int.MaxValue,
                Selects = CustomerSelect.ALL
            };
            List <Customer> Customers = await CustomerService.List(CustomerFilter);

            CustomerFeedbackTypeFilter CustomerFeedbackTypeFilter = new CustomerFeedbackTypeFilter
            {
                Skip    = 0,
                Take    = int.MaxValue,
                Selects = CustomerFeedbackTypeSelect.ALL
            };
            List <CustomerFeedbackType> CustomerFeedbackTypes = await CustomerFeedbackTypeService.List(CustomerFeedbackTypeFilter);

            StatusFilter StatusFilter = new StatusFilter
            {
                Skip    = 0,
                Take    = int.MaxValue,
                Selects = StatusSelect.ALL
            };
            List <Status> Statuses = await StatusService.List(StatusFilter);

            List <CustomerFeedback> CustomerFeedbacks = new List <CustomerFeedback>();

            using (ExcelPackage excelPackage = new ExcelPackage(file.OpenReadStream()))
            {
                ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.FirstOrDefault();
                if (worksheet == null)
                {
                    return(Ok(CustomerFeedbacks));
                }
                int StartColumn                  = 1;
                int StartRow                     = 1;
                int IdColumn                     = 0 + StartColumn;
                int IsSystemCustomerColumn       = 1 + StartColumn;
                int CustomerIdColumn             = 2 + StartColumn;
                int FullNameColumn               = 3 + StartColumn;
                int EmailColumn                  = 4 + StartColumn;
                int PhoneNumberColumn            = 5 + StartColumn;
                int CustomerFeedbackTypeIdColumn = 6 + StartColumn;
                int TitleColumn                  = 7 + StartColumn;
                int SendDateColumn               = 8 + StartColumn;
                int ContentColumn                = 9 + StartColumn;
                int StatusIdColumn               = 10 + StartColumn;

                for (int i = StartRow; i <= worksheet.Dimension.End.Row; i++)
                {
                    if (string.IsNullOrEmpty(worksheet.Cells[i + StartRow, StartColumn].Value?.ToString()))
                    {
                        break;
                    }
                    string IdValue = worksheet.Cells[i + StartRow, IdColumn].Value?.ToString();
                    string IsSystemCustomerValue       = worksheet.Cells[i + StartRow, IsSystemCustomerColumn].Value?.ToString();
                    string CustomerIdValue             = worksheet.Cells[i + StartRow, CustomerIdColumn].Value?.ToString();
                    string FullNameValue               = worksheet.Cells[i + StartRow, FullNameColumn].Value?.ToString();
                    string EmailValue                  = worksheet.Cells[i + StartRow, EmailColumn].Value?.ToString();
                    string PhoneNumberValue            = worksheet.Cells[i + StartRow, PhoneNumberColumn].Value?.ToString();
                    string CustomerFeedbackTypeIdValue = worksheet.Cells[i + StartRow, CustomerFeedbackTypeIdColumn].Value?.ToString();
                    string TitleValue                  = worksheet.Cells[i + StartRow, TitleColumn].Value?.ToString();
                    string SendDateValue               = worksheet.Cells[i + StartRow, SendDateColumn].Value?.ToString();
                    string ContentValue                = worksheet.Cells[i + StartRow, ContentColumn].Value?.ToString();
                    string StatusIdValue               = worksheet.Cells[i + StartRow, StatusIdColumn].Value?.ToString();

                    CustomerFeedback CustomerFeedback = new CustomerFeedback();
                    CustomerFeedback.FullName    = FullNameValue;
                    CustomerFeedback.Email       = EmailValue;
                    CustomerFeedback.PhoneNumber = PhoneNumberValue;
                    CustomerFeedback.Title       = TitleValue;
                    CustomerFeedback.SendDate    = DateTime.TryParse(SendDateValue, out DateTime SendDate) ? SendDate : DateTime.Now;
                    CustomerFeedback.Content     = ContentValue;
                    Customer Customer = Customers.Where(x => x.Id.ToString() == CustomerIdValue).FirstOrDefault();
                    CustomerFeedback.CustomerId = Customer == null ? 0 : Customer.Id;
                    CustomerFeedback.Customer   = Customer;
                    CustomerFeedbackType CustomerFeedbackType = CustomerFeedbackTypes.Where(x => x.Id.ToString() == CustomerFeedbackTypeIdValue).FirstOrDefault();
                    CustomerFeedback.CustomerFeedbackTypeId = CustomerFeedbackType == null ? 0 : CustomerFeedbackType.Id;
                    CustomerFeedback.CustomerFeedbackType   = CustomerFeedbackType;
                    Status Status = Statuses.Where(x => x.Id.ToString() == StatusIdValue).FirstOrDefault();
                    CustomerFeedback.StatusId = Status == null ? 0 : Status.Id;
                    CustomerFeedback.Status   = Status;

                    CustomerFeedbacks.Add(CustomerFeedback);
                }
            }
            CustomerFeedbacks = await CustomerFeedbackService.Import(CustomerFeedbacks);

            if (CustomerFeedbacks.All(x => x.IsValidated))
            {
                return(Ok(true));
            }
            else
            {
                List <string> Errors = new List <string>();
                for (int i = 0; i < CustomerFeedbacks.Count; i++)
                {
                    CustomerFeedback CustomerFeedback = CustomerFeedbacks[i];
                    if (!CustomerFeedback.IsValidated)
                    {
                        string Error = $"Dòng {i + 2} có lỗi:";
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.Id)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.Id)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.IsSystemCustomer)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.IsSystemCustomer)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.CustomerId)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.CustomerId)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.FullName)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.FullName)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.Email)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.Email)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.PhoneNumber)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.PhoneNumber)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.CustomerFeedbackTypeId)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.CustomerFeedbackTypeId)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.Title)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.Title)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.SendDate)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.SendDate)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.Content)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.Content)];
                        }
                        if (CustomerFeedback.Errors.ContainsKey(nameof(CustomerFeedback.StatusId)))
                        {
                            Error += CustomerFeedback.Errors[nameof(CustomerFeedback.StatusId)];
                        }
                        Errors.Add(Error);
                    }
                }
                return(BadRequest(Errors));
            }
        }
Beispiel #8
0
        private IQueryable <CustomerFeedbackTypeDAO> DynamicOrder(IQueryable <CustomerFeedbackTypeDAO> query, CustomerFeedbackTypeFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case CustomerFeedbackTypeOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case CustomerFeedbackTypeOrder.Code:
                    query = query.OrderBy(q => q.Code);
                    break;

                case CustomerFeedbackTypeOrder.Name:
                    query = query.OrderBy(q => q.Name);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case CustomerFeedbackTypeOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case CustomerFeedbackTypeOrder.Code:
                    query = query.OrderByDescending(q => q.Code);
                    break;

                case CustomerFeedbackTypeOrder.Name:
                    query = query.OrderByDescending(q => q.Name);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
Beispiel #9
0
        private IQueryable <CustomerFeedbackTypeDAO> OrFilter(IQueryable <CustomerFeedbackTypeDAO> query, CustomerFeedbackTypeFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <CustomerFeedbackTypeDAO> initQuery = query.Where(q => false);

            foreach (CustomerFeedbackTypeFilter CustomerFeedbackTypeFilter in filter.OrFilter)
            {
                IQueryable <CustomerFeedbackTypeDAO> queryable = query;
                if (CustomerFeedbackTypeFilter.Id != null && CustomerFeedbackTypeFilter.Id.HasValue)
                {
                    queryable = queryable.Where(q => q.Id, CustomerFeedbackTypeFilter.Id);
                }
                if (CustomerFeedbackTypeFilter.Code != null && CustomerFeedbackTypeFilter.Code.HasValue)
                {
                    queryable = queryable.Where(q => q.Code, CustomerFeedbackTypeFilter.Code);
                }
                if (CustomerFeedbackTypeFilter.Name != null && CustomerFeedbackTypeFilter.Name.HasValue)
                {
                    queryable = queryable.Where(q => q.Name, CustomerFeedbackTypeFilter.Name);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
Beispiel #10
0
 private IQueryable <CustomerFeedbackTypeDAO> DynamicFilter(IQueryable <CustomerFeedbackTypeDAO> query, CustomerFeedbackTypeFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     if (filter.Id != null && filter.Id.HasValue)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.Code != null && filter.Code.HasValue)
     {
         query = query.Where(q => q.Code, filter.Code);
     }
     if (filter.Name != null && filter.Name.HasValue)
     {
         query = query.Where(q => q.Name, filter.Name);
     }
     query = OrFilter(query, filter);
     return(query);
 }
Beispiel #11
0
        private async Task <List <CustomerFeedbackType> > DynamicSelect(IQueryable <CustomerFeedbackTypeDAO> query, CustomerFeedbackTypeFilter filter)
        {
            List <CustomerFeedbackType> CustomerFeedbackTypes = await query.Select(q => new CustomerFeedbackType()
            {
                Id   = filter.Selects.Contains(CustomerFeedbackTypeSelect.Id) ? q.Id : default(long),
                Code = filter.Selects.Contains(CustomerFeedbackTypeSelect.Code) ? q.Code : default(string),
                Name = filter.Selects.Contains(CustomerFeedbackTypeSelect.Name) ? q.Name : default(string),
            }).ToListAsync();

            return(CustomerFeedbackTypes);
        }