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()); }
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); }
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); }
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); }
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); }
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); }
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); }