public async Task <(User user, bool updated, string returnMessage)> UpdateUserExpiredPassword(int id, string password, string token) { var entity = (await _userRepository.CustomFind(x => x.Id == id, x => x.Office, x => x.UserStatus)).FirstOrDefault(); if (entity == null) { return(entity, false, "Usuario não encontrado"); } if (string.IsNullOrEmpty(password) || entity.Password.Equals(Crypto.Encrypt(password, Crypto.Key256, 256))) { return(entity, false, "Senha inválida"); } var accessCode = await _userAccessCodeExpirationRepository.GetAccessCode(id); if (accessCode != null && !accessCode.Code.Equals(token)) { return(entity, false, "Token inválido"); } var oldStatus = entity.UserStatus; entity.Password = Crypto.Encrypt(password, Crypto.Key256, 256); entity.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Active); _userStatusLogRepository.Save(new UserStatusLog { CreatedAt = DateTime.Now, Description = "Reativação de usuario com senha expirada", User = entity, UserStatusFrom = oldStatus, UserStatusTo = entity.UserStatus }); await _unitOfWork.CommitAsync(); return(entity, true, "Usuario Alterado com sucesso"); }
public async Task <(UserDto user, bool authenticated, string messageReturning)> DoPreRegistration(UserDto userDto, IFormFile file) { var user = (await _userRepository.CustomFind(x => x.Id == userDto.Id, x => x.Office, x => x.UserStatus)).First(); var lastStatus = user.UserStatus; var accessCodeUser = await _userAccessCodeConfirmationRepository.GetAccessCode(user.Id); if (accessCodeUser == null) { return(userDto, false, "Código de acesso não encontrado"); } if (accessCodeUser.Code != userDto.AccessCode) { return(userDto, false, "Código de acesso inválido"); } if (user.UserStatus.Id != (int)UserStatusEnum.PreRegistration) { return(userDto, false, "Usuário não encontra-se no estado de pré cadastro!"); } if (string.IsNullOrEmpty(userDto.Password)) { return(userDto, false, "informe uma senha"); } if (file != null) { if (file.Length > 0 && file.Length <= 2000000) { var extensions = Path.GetFileName(file.FileName).Split('.').Last(); if (extensions.ToUpper() != "JPG" && extensions.ToUpper() != "JPEG" && extensions.ToUpper() != "PNG") { return(userDto, false, "Foto perfil formato inválido"); } var imageName = $"{DateTime.Now.Year}" + $"{DateTime.Now.Month.ToString().PadLeft(2, '0')}" + $"{DateTime.Now.Day.ToString().PadLeft(2, '0')}" + $"{DateTime.Now.Hour.ToString().PadLeft(2, '0')}" + $"{DateTime.Now.Minute.ToString().PadLeft(2, '0')}" + $"{DateTime.Now.Second.ToString().PadLeft(2, '0')}.{extensions}"; var path = Path.Combine(_env.WebRootPath, $"Content/PhotoPerfil/{Path.GetFileName(imageName)}"); using (var stream = new FileStream(path, FileMode.Create)) { await file.CopyToAsync(stream); } userDto.Photo = imageName; } else { return(userDto, false, "Foto perfil tem limite de tamanho 2MB"); } } _mapper.Map(userDto, user); user.Password = Crypto.Encrypt(userDto.Password, Crypto.Key256, 256); user.Activated = true; user.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Active); _userStatusLogRepository.Save(new UserStatusLog { CreatedAt = DateTime.Now, User = user, UserStatusTo = user.UserStatus, UserStatusFrom = lastStatus, Description = "Pre cadastro" }); var shopUser = (await _shopUserRepository.CustomFind(x => x.User.Id == userDto.Id, x => x.Shop, x => x.Shop.Network)).FirstOrDefault(); if (shopUser == null) { return(userDto, false, "Usuario sem loja cadastrada!"); } userDto.Network = shopUser.Shop.Network.Id; await _unitOfWork.CommitAsync(); _mapper.Map(user, userDto); _emailService.SendConfirmation(user.Cpf, user.Name, user.Email); if (!string.IsNullOrEmpty(user.AccessCodeInvite)) { await FriendInviteSetPunctuation(user); } return(userDto, true, "Usuario atualizado com sucesso!"); }
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 <(bool Saved, List <User> Users)> DoSaveSalesman(IEnumerable <HavanUserIntegrationDto> havanUserIntegratio, IEnumerable <Shop> shops, IEnumerable <Office> offices, UserStatus preOrder, List <User> users) { foreach (var item in havanUserIntegratio) { if (!string.IsNullOrEmpty(item.CpfVendedor)) { var newShopUser = shops.Where(x => x.Cnpj.Equals(item.CnpjFilial) && x.ShopCode.Equals(item.CodigoFilial)).FirstOrDefault(); var currentUser = users.Where(x => x.Cpf.Equals(item.CpfVendedor)).FirstOrDefault(); if (currentUser == null) { if (newShopUser != null) { var newUser = new User { Activated = false, Cpf = item.CpfVendedor, Office = offices.Where(x => x.Id == (int)OfficeEnum.Salesman).FirstOrDefault(), UserStatus = preOrder, PrivacyPolicy = false, Name = item.NomeVendedor, CreatedAt = DateTime.Now }; _userRepository.Save(newUser); _shopUserRepository.Save(new ShopUser { User = newUser, Shop = newShopUser, Activated = true, CreatedAt = DateTime.Now }); users.Add(newUser); _logger.Info($"Atualização de hierarquia havan - novo usuario inserido no programa em pre cadastro com cpf {item.CpfVendedor}"); } else { _logger.Warn($"Atualização de hierarquia havan - loja com cnpj {item.CnpjFilial} e codigo {item.CodigoFilial} não cadastrada no sistema"); } } else { _logger.Info($"Atualização de hierarquia havan - atualizado usuario no programa com cpf {item.CpfVendedor}"); var lastStatus = currentUser.UserStatus; if (currentUser.Office.Id != (int)OfficeEnum.Salesman) { currentUser.Office = offices.Where(x => x.Id == (int)OfficeEnum.Salesman).FirstOrDefault(); } var lastSale = await _saleRepository.CustomFindLast(x => x.User.Id == currentUser.Id, x => x.Id); if (currentUser.Office.Id == (int)OfficeEnum.Salesman && lastSale != null && lastSale.CreatedAt < DateTime.Now.AddMonths(-2) && currentUser.UserStatus.Id != (int)UserStatusEnum.FriendInvitation && currentUser.UserStatus.Id != (int)UserStatusEnum.PreRegistration && currentUser.UserStatus.Id != (int)UserStatusEnum.OnlyCatalog) { _logger.Info($" processamento da hierarquia em progresso - usuario com id {currentUser.Id} foi para somente catalogo por inatividade nas vendas"); currentUser.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.OnlyCatalog); } else if (currentUser.Office.Id == (int)OfficeEnum.Salesman && lastSale != null && lastSale.CreatedAt < DateTime.Now.AddMonths(-3) && currentUser.UserStatus.Id == (int)UserStatusEnum.OnlyCatalog) { _logger.Info($" processamento da hierarquia em progresso - usuario com id {currentUser.Id} foi inativado por inatividade nas vendas"); currentUser.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Inactive); } else if ( currentUser.Office.Id == (int)OfficeEnum.Salesman && lastSale != null && lastSale.CreatedAt > DateTime.Now.AddMonths(-2) && (currentUser.UserStatus.Id == (int)UserStatusEnum.OnlyCatalog || currentUser.UserStatus.Id == (int)UserStatusEnum.Inactive || currentUser.UserStatus.Id == (int)UserStatusEnum.Off)) { _logger.Info($" processamento da hierarquia em progresso - usuario com id {currentUser.Id} foi reativado"); currentUser.UserStatus = await _userStatusRepository.GetById((int)UserStatusEnum.Active); } _shopUserRepository.Save(new ShopUser { User = currentUser, Shop = newShopUser, Activated = true, CreatedAt = DateTime.Now }); if (currentUser.UserStatus.Id != lastStatus.Id) { _userStatusLogRepository.Save(new UserStatusLog { CreatedAt = DateTime.Now, User = currentUser, UserStatusTo = currentUser.UserStatus, UserStatusFrom = lastStatus, Description = "Processamento de hierarquia havan" }); } } } } return(await _unitOfWork.CommitAsync(), users); }