Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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);
        }