Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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!");
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        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);
        }