示例#1
0
        public async Task <bool> CreatePreRegistrationUser(HierarchyFileData hierarchyFileData, Office office, Shop shop)
        {
            var user = new User
            {
                Activated  = false,
                CreatedAt  = DateTime.Now,
                Name       = hierarchyFileData.Name,
                Cpf        = hierarchyFileData.Cpf,
                Office     = office,
                UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.PreRegistration)
            };

            _userRepository.Save(user);

            var userShop = await _shopUserRepository.CustomFind(x => x.User.Id == user.Id);

            _shopUserRepository.DeleteMany(userShop);

            _shopUserRepository.Save(new ShopUser
            {
                CreatedAt = DateTime.Now,
                Activated = true,
                Shop      = shop,
                User      = user
            });

            _logger.Info($" processamento da hierarquia em progresso - usuario com id {user.Cpf} foi criado em pre cadastro");

            return(await _unitOfWork.CommitAsync());
        }
示例#2
0
        public async Task <(IEnumerable <HierarchyFileDataError> errorList, IEnumerable <HierarchyFileData> dataList)> ValidateManagerTab(HierarchyFile hierarchyFile, ExcelWorksheet managerTab)
        {
            var ListHierarchyFileDataError = new List <HierarchyFileDataError>();
            var ListHierarchyFileData      = new List <HierarchyFileData>();

            for (var row = 2; row <= managerTab.Dimension.End.Row; row++)
            {
                if (managerTab.Cells[row, 1].Value != null &&
                    managerTab.Cells[row, 2].Value != null &&
                    managerTab.Cells[row, 3].Value != null &&
                    managerTab.Cells[row, 4].Value != null &&
                    managerTab.Cells[row, 5].Value != null &&
                    managerTab.Cells[row, 6].Value != null)
                {
                    var hierarchyFileData = new HierarchyFileData
                    {
                        Cnpj          = (managerTab.Cells[row, 3].Value != null) ? managerTab.Cells[row, 3].Value.ToString().PadLeft(14, '0').Replace("-", "").Replace("/", "").Replace(".", "").Replace(".0", "") : String.Empty,
                        Cpf           = (managerTab.Cells[row, 4].Value != null) ? managerTab.Cells[row, 4].Value.ToString().PadLeft(11, '0').Replace("-", "").Replace(".", "").Replace(".0", "") : String.Empty,
                        ShopCode      = (managerTab.Cells[row, 2].Value != null) ? managerTab.Cells[row, 2].Value.ToString().Replace(".0", "") : String.Empty,
                        Name          = (managerTab.Cells[row, 5].Value != null) ? managerTab.Cells[row, 5].Value.ToString() : String.Empty,
                        Resale        = (managerTab.Cells[row, 1].Value != null) ? managerTab.Cells[row, 1].Value.ToString() : String.Empty,
                        Spreedsheet   = "GERENTES_REGIONAIS",
                        CreatedAt     = DateTime.Now,
                        HierarchyFile = hierarchyFile,
                        Off           = (managerTab.Cells[row, 6].Value != null) ? managerTab.Cells[row, 6].Value.ToString().Trim() : String.Empty,
                    };

                    ListHierarchyFileDataError.AddRange(await ValidateSpreadsheetRow(hierarchyFileData, hierarchyFile, row, 2, hierarchyFileData.Spreedsheet));

                    ListHierarchyFileData.Add(hierarchyFileData);
                }
            }

            return(ListHierarchyFileDataError, ListHierarchyFileData);
        }
示例#3
0
        public async Task <(IEnumerable <HierarchyFileDataError> errorList, IEnumerable <HierarchyFileData> dataList)> ValidateSalesmanTab(HierarchyFile hierarchyFile, ExcelWorksheet salesmanTab)
        {
            var ListHierarchyFileDataError = new List <HierarchyFileDataError>();
            var ListHierarchyFileData      = new List <HierarchyFileData>();

            for (var row = 2; row <= salesmanTab.Dimension.End.Row; row++)
            {
                if (salesmanTab.Cells[row, 1].Value != null &&
                    salesmanTab.Cells[row, 2].Value != null &&
                    salesmanTab.Cells[row, 3].Value != null &&
                    salesmanTab.Cells[row, 4].Value != null &&
                    salesmanTab.Cells[row, 5].Value != null &&
                    salesmanTab.Cells[row, 6].Value != null &&
                    salesmanTab.Cells[row, 7].Value != null)
                {
                    var hierarchyFileData = new HierarchyFileData
                    {
                        Cnpj          = (salesmanTab.Cells[row, 3].Value != null) ? salesmanTab.Cells[row, 3].Value.ToString().PadLeft(14, '0').Replace("-", "").Replace("/", "").Replace(".", "").Replace(".0", "") : String.Empty,
                        Cpf           = (salesmanTab.Cells[row, 4].Value != null) ? salesmanTab.Cells[row, 4].Value.ToString().PadLeft(11, '0').Replace("-", "").Replace(".", "").Replace(".0", "") : String.Empty,
                        ShopCode      = (salesmanTab.Cells[row, 2].Value != null) ? salesmanTab.Cells[row, 2].Value.ToString().Replace(".0", "") : String.Empty,
                        Name          = (salesmanTab.Cells[row, 5].Value != null) ? salesmanTab.Cells[row, 5].Value.ToString() : String.Empty,
                        Off           = (salesmanTab.Cells[row, 7].Value != null) ? salesmanTab.Cells[row, 7].Value.ToString() : String.Empty,
                        Office        = Validation.RemoverAcentos((salesmanTab.Cells[row, 6].Value != null) ? (salesmanTab.Cells[row, 6].Value.ToString().ToUpper().Trim() == "SUB GERENTE" || salesmanTab.Cells[row, 6].Value.ToString().ToUpper().Trim() == "SUB-GERENTE") ? "GERENTE" : salesmanTab.Cells[row, 6].Value.ToString() : String.Empty),
                        Resale        = (salesmanTab.Cells[row, 1].Value != null) ? salesmanTab.Cells[row, 1].Value.ToString() : String.Empty,
                        Spreedsheet   = "VENDEDORES_GERENTES",
                        CreatedAt     = DateTime.Now,
                        HierarchyFile = hierarchyFile,
                    };

                    ListHierarchyFileDataError.AddRange(await ValidateSpreadsheetRow(hierarchyFileData, hierarchyFile, row, 1, hierarchyFileData.Spreedsheet));

                    if (ListHierarchyFileData.Any() && ListHierarchyFileData.Where(x => x.Cpf.Equals(hierarchyFileData.Cpf)).Any())
                    {
                        ListHierarchyFileDataError.Add(new HierarchyFileDataError
                        {
                            CreatedAt     = DateTime.Now,
                            Description   = $"CPF {hierarchyFileData.Cpf} duplicado",
                            HierarchyFile = hierarchyFile,
                            Line          = row,
                            Spreedsheet   = hierarchyFileData.Spreedsheet
                        });
                    }

                    ListHierarchyFileData.Add(hierarchyFileData);
                }
            }

            return(ListHierarchyFileDataError, ListHierarchyFileData);
        }
示例#4
0
        public async Task CreatePreRegistrationUser_CreatingUser_ReturningTrue()
        {
            _mockUserStatusRepository.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(new UserStatus {
                Id = 1
            });
            _mockShopUserRepository.Setup(x => x.CustomFind(It.IsAny <Expression <Func <ShopUser, bool> > >())).ReturnsAsync(new List <ShopUser> {
                new ShopUser {
                    Id = 1
                }
            });
            _mockUnitOfWork.Setup(x => x.CommitAsync()).ReturnsAsync(true);

            var hierarchyProcesses = new HierarchyProcessesService(
                _mockSaleFileRepository.Object,
                _mockEmailService.Object,
                _mockUserAccessCodeInviteRepository.Object,
                _mockUserPunctuationSourceRepository.Object,
                _mockUserPunctuationRepository.Object,
                _mockUserStatusLogRepository.Object,
                _mockLogger.Object,
                _mockHierarchyFileDataRepository.Object,
                _mockHierarchyFileDataErrorRepository.Object,
                _mockHierarchyFileRepository.Object,
                _mockFileStatusRepository.Object,
                _mockUserRepository.Object,
                _mockUserStatusRepository.Object,
                _mockShopRepository.Object,
                _mockShopUserRepository.Object,
                _mockUnitOfWork.Object,
                _mockOfficeRepository.Object,
                _mockSaleRepository.Object);

            var hierarchyFileData = new HierarchyFileData {
                Name = "teste", Cpf = "00000000000"
            };
            var office = new Office {
                Id = 1
            };
            var shop = new Shop {
                Id = 1
            };

            var result = await hierarchyProcesses.CreatePreRegistrationUser(hierarchyFileData, office, shop);

            Assert.True(result);
        }
示例#5
0
        public async Task UpdateHierarchyUsers_PreRegistrationOffUserProcessing_ReturningUser()
        {
            _mockSaleRepository.Setup(x => x.CustomFindLast(It.IsAny <Expression <Func <Sale, bool> > >(), It.IsAny <Expression <Func <Sale, int> > >())).ReturnsAsync(new Sale {
                CreatedAt = DateTime.Now
            });
            _mockShopUserRepository.Setup(x => x.CustomFind(It.IsAny <Expression <Func <ShopUser, bool> > >())).ReturnsAsync(new List <ShopUser> {
                new ShopUser {
                    Shop = new Shop {
                        Id = 10
                    }
                }
            });

            var arrangeStatus = new List <UserStatus>();

            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.PreRegistration
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.WaitingForEmail
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.Active
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.Off
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.Inactive
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.WaitingForSMS
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.OnlyCatalog
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.PasswordExpired
            });
            arrangeStatus.Add(new UserStatus {
                Id = (int)UserStatusEnum.FriendInvitation
            });

            _mockUserStatusRepository.Setup(x => x.GetById(It.IsAny <int>()))
            .ReturnsAsync((int param) => arrangeStatus.AsQueryable().Where(x => x.Id == param).First());

            var user = new User {
                Id = 10, UserStatus = new UserStatus {
                    Id = (int)UserStatusEnum.PreRegistration
                }, Office = new Office {
                    Id = (int)OfficeEnum.Salesman
                }
            };
            var hierarchyFileData = new HierarchyFileData {
                Off = "SIM"
            };
            var office = new Office {
                Id = (int)OfficeEnum.Salesman
            };
            var shop = new Shop {
                Id = 10
            };

            var hierarchyProcesses = new HierarchyProcessesService(
                _mockSaleFileRepository.Object,
                _mockEmailService.Object,
                _mockUserAccessCodeInviteRepository.Object,
                _mockUserPunctuationSourceRepository.Object,
                _mockUserPunctuationRepository.Object,
                _mockUserStatusLogRepository.Object,
                _mockLogger.Object,
                _mockHierarchyFileDataRepository.Object,
                _mockHierarchyFileDataErrorRepository.Object,
                _mockHierarchyFileRepository.Object,
                _mockFileStatusRepository.Object,
                _mockUserRepository.Object,
                _mockUserStatusRepository.Object,
                _mockShopRepository.Object,
                _mockShopUserRepository.Object,
                _mockUnitOfWork.Object,
                _mockOfficeRepository.Object,
                _mockSaleRepository.Object);

            var result = await hierarchyProcesses.UpdateHierarchyUsers(user, hierarchyFileData, office, shop);

            Assert.Equal((int)UserStatusEnum.Inactive, result.UserStatus.Id);
        }
示例#6
0
        public async Task <User> UpdateHierarchyUsers(User user, HierarchyFileData hierarchyFileData, Office office, Shop shop)
        {
            user.Office = office;
            var lastSale = await _saleRepository.CustomFindLast(x => x.User.Id == user.Id, x => x.Id);

            var lastStatus = user.UserStatus;
            var userShop   = await _shopUserRepository.CustomFind(x => x.User.Id == user.Id, x => x.Shop);

            if (!string.IsNullOrEmpty(hierarchyFileData.Off) && hierarchyFileData.Off.ToUpper().Equals("SIM") && user.UserStatus.Id != (int)UserStatusEnum.PreRegistration)
            {
                _logger.Info($" processamento da hierarquia em progresso - usuario com id {user.Id} foi para somente catalogo por desligado sim na planilha");
                user.OffIn      = DateTime.Now;
                user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.OnlyCatalog);
            }
            else if (!string.IsNullOrEmpty(hierarchyFileData.Off) && hierarchyFileData.Off.ToUpper().Equals("SIM"))
            {
                _logger.Info($" processamento da hierarquia em progresso - usuario com id {user.Id} foi para inativo por desligado sim na planilha");
                user.OffIn      = DateTime.Now;
                user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Inactive);
            }

            if (office.Id == (int)OfficeEnum.RegionManager && !userShop.Where(x => x.Shop.Id == shop.Id).Any())
            {
                _shopUserRepository.Save(new ShopUser
                {
                    CreatedAt = DateTime.Now,
                    Activated = true,
                    Shop      = shop,
                    User      = user
                });
            }
            else if (office.Id == (int)OfficeEnum.Salesman || office.Id == (int)OfficeEnum.Manager && user.UserStatus.Id != (int)UserStatusEnum.PreRegistration)
            {
                if (office.Id == (int)OfficeEnum.Salesman && lastSale != null &&
                    lastSale.CreatedAt < DateTime.Now.AddMonths(-2) &&
                    user.UserStatus.Id != (int)UserStatusEnum.FriendInvitation &&
                    user.UserStatus.Id != (int)UserStatusEnum.PreRegistration &&
                    user.UserStatus.Id != (int)UserStatusEnum.OnlyCatalog)
                {
                    _logger.Info($" processamento da hierarquia em progresso - usuario com id {user.Id} foi para somente catalogo por inatividade nas vendas");
                    user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.OnlyCatalog);
                }
                else if (office.Id == (int)OfficeEnum.Salesman && lastSale != null && lastSale.CreatedAt < DateTime.Now.AddMonths(-3) && user.UserStatus.Id == (int)UserStatusEnum.OnlyCatalog)
                {
                    _logger.Info($" processamento da hierarquia em progresso - usuario com id {user.Id} foi inativado por inatividade nas vendas");
                    user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Inactive);
                }
                else if (
                    office.Id == (int)OfficeEnum.Salesman && lastSale != null &&
                    lastSale.CreatedAt > DateTime.Now.AddMonths(-2) &&
                    (user.UserStatus.Id == (int)UserStatusEnum.OnlyCatalog || user.UserStatus.Id == (int)UserStatusEnum.Inactive || user.UserStatus.Id == (int)UserStatusEnum.Off) &&
                    !string.IsNullOrEmpty(hierarchyFileData.Off) &&
                    !hierarchyFileData.Off.ToUpper().Equals("SIM"))
                {
                    _logger.Info($" processamento da hierarquia em progresso - usuario com id {user.Id} foi reativado");
                    user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Active);
                }

                _shopUserRepository.DeleteMany(userShop);

                _shopUserRepository.Save(new ShopUser
                {
                    CreatedAt = DateTime.Now,
                    Activated = true,
                    Shop      = shop,
                    User      = user
                });
            }

            if (user.UserStatus.Id == (int)UserStatusEnum.FriendInvitation)
            {
                user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.PreRegistration);

                user.Name = hierarchyFileData.Name;
            }


            if (user.UserStatus.Id != lastStatus.Id)
            {
                _userStatusLogRepository.Save(new UserStatusLog
                {
                    CreatedAt      = DateTime.Now,
                    User           = user,
                    UserStatusTo   = user.UserStatus,
                    UserStatusFrom = lastStatus,
                    Description    = "Processamento de hierarquia"
                });
            }

            await _unitOfWork.CommitAsync();

            return(user);
        }
示例#7
0
        public async Task <IEnumerable <HierarchyFileDataError> > ValidateSpreadsheetRow(HierarchyFileData hierarchyFileData, HierarchyFile hierarchyFile, int line, int tab, string spreadsheet)
        {
            var ListHierarchyFileDataError = new List <HierarchyFileDataError>();

            if (String.IsNullOrEmpty(hierarchyFileData.Resale))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Revenda em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }

            if (String.IsNullOrEmpty(hierarchyFileData.ShopCode))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Código Loja em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }

            if (String.IsNullOrEmpty(hierarchyFileData.Cnpj))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "CNPJ em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }
            else if (!String.IsNullOrEmpty(hierarchyFileData.Cnpj))
            {
                if (!Validation.ValidaCnpj(hierarchyFileData.Cnpj))
                {
                    ListHierarchyFileDataError.Add(new HierarchyFileDataError
                    {
                        CreatedAt     = DateTime.Now,
                        Description   = $"CNPJ {hierarchyFileData.Cnpj} inválido.",
                        HierarchyFile = hierarchyFile,
                        Line          = line,
                        Spreedsheet   = spreadsheet
                    });
                }
                else
                {
                    var hasCnpj = await _shopRepository.CustomFind(x => x.Cnpj.Equals(hierarchyFileData.Cnpj));

                    if (!hasCnpj.Any())
                    {
                        ListHierarchyFileDataError.Add(new HierarchyFileDataError
                        {
                            CreatedAt     = DateTime.Now,
                            Description   = $"CNPJ {hierarchyFileData.Cnpj} não encontrado.",
                            HierarchyFile = hierarchyFile,
                            Line          = line,
                            Spreedsheet   = spreadsheet
                        });
                    }
                }
            }

            if (String.IsNullOrEmpty(hierarchyFileData.Cpf))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "CPF em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }
            else if (!String.IsNullOrEmpty(hierarchyFileData.Cpf))
            {
                if (!Validation.ValidaCPF(hierarchyFileData.Cpf))
                {
                    ListHierarchyFileDataError.Add(new HierarchyFileDataError
                    {
                        CreatedAt     = DateTime.Now,
                        Description   = "CPF inválido.",
                        HierarchyFile = hierarchyFile,
                        Line          = line,
                        Spreedsheet   = spreadsheet
                    });
                }
            }

            if (String.IsNullOrEmpty(hierarchyFileData.Name))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Nome em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }
            else if (!hierarchyFileData.Name.ToCharArray().All(t => !char.IsDigit(t)))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Nome inválido.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }


            if (String.IsNullOrEmpty(hierarchyFileData.Off))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Desligado em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }
            else if (hierarchyFileData.Off.ToUpper() != "SIM" && hierarchyFileData.Off.ToUpper() != "NÃO" && hierarchyFileData.Off.ToUpper() != "NAO")
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Desligado inválido.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }

            if (tab != 1)
            {
                return(ListHierarchyFileDataError);
            }

            if (String.IsNullOrEmpty(hierarchyFileData.Office))
            {
                ListHierarchyFileDataError.Add(new HierarchyFileDataError
                {
                    CreatedAt     = DateTime.Now,
                    Description   = "Cargo em branco.",
                    HierarchyFile = hierarchyFile,
                    Line          = line,
                    Spreedsheet   = spreadsheet
                });
            }
            else
            {
                if (!Validation.IsOffice(hierarchyFileData.Office.Replace(" ", "")))
                {
                    ListHierarchyFileDataError.Add(new HierarchyFileDataError
                    {
                        CreatedAt     = DateTime.Now,
                        Description   = $"Cargo {hierarchyFileData.Office} não encontrado.",
                        HierarchyFile = hierarchyFile,
                        Line          = line,
                        Spreedsheet   = spreadsheet
                    });
                }
            }


            return(ListHierarchyFileDataError);
        }