public AccountActionResponse ExecuteAction(AccountActionRequest request, Guid userID)
        {
            AccountDto userAccount = _baseService.GetAccountById(userID, false);

            if (request.AccountId == null || request.AccountId == Guid.Empty)
            {
                request.AccountId = userID;
            }
            AccountDto savedAccount = _baseService.GetAccountById(request.AccountId, false);

            if (request.Account == null)
            {
                request.Account = savedAccount;
            }

            if (StaticConfiguration.GetAcrionByProfile(userAccount.Role) == null)
            {
                throw new Exception("Invalid Profile");
            }
            else
            {
                ApplicationAction actions = StaticConfiguration.GetAcrionByProfile(userAccount.Role).Find(x => x.Id == request.ActionId);
                if (actions == null)
                {
                    throw new Exception("Invalid Action");
                }
                Func <AccountDto, AccountDto, AccountActionRequest, string, AccountActionResponse> func;
                if (!this.ActionIdToFunction.TryGetValue(request.ActionId, out func))
                {
                    throw new Exception("Δεν βρέθηκε ενέργεια για το Id: " + request.ActionId);
                }

                return(func(savedAccount, request.Account, request, userAccount.Role));
            }
        }
Ejemplo n.º 2
0
        public AccountDto GetSpesificAccount(AccountActionRequest request)
        {
            List <AccountDto> accounts = _storageService.GetAccounts();
            AccountDto        user     = accounts.Find(x => request?.Account?.UserName == x.UserName);

            if (_storageService.ValidateAccount(request.Account))
            {
                return(user);
            }
            return(null);
        }
Ejemplo n.º 3
0
        public IEnumerable <AccountDto> GetAccounts(AccountActionRequest request)
        {
            List <AccountDto> accounts         = _storageService.GetAccounts();
            List <AccountDto> filteredAccounts = new List <AccountDto>();

            return(accounts.FindAll(x =>
            {
                bool isCorrectAccount = false;
                isCorrectAccount = (!string.IsNullOrWhiteSpace(request?.Account?.UserName) ? x.UserName == request?.Account?.UserName : true) &&
                                   (!string.IsNullOrWhiteSpace(request?.Account?.Email) ? x.Email == request?.Account?.Email : true) &&
                                   (!string.IsNullOrWhiteSpace(request?.Account?.FirstName) ? x.FirstName == request?.Account?.FirstName : true) &&
                                   (!string.IsNullOrWhiteSpace(request?.Account?.LastName) ? x.FirstName == request?.Account?.LastName : true) &&
                                   (!string.IsNullOrWhiteSpace(request?.Account?.Role) ? x.Role == request?.Account?.Role : true);
                return isCorrectAccount;
            }));
        }
 public Response <AccountActionResponse> AccountAction([FromBody] AccountActionRequest request)
 {
     return(_exceptionHandler.HandleException(() => _accountService.ExecuteAction(request, Guid.Parse(HttpContext.User.Identity.Name)), request.ActionId));
 }
        private AccountActionResponse GetIfHackedFunc(AccountDto savedAccount, AccountDto requestedAccount, AccountActionRequest request, string Role)
        {
            string isHacked = "";

            try
            {
                var responce = (_hackScanner.IsThisEmailHacked(requestedAccount?.Email)).GetAwaiter().GetResult();
                if (responce != null && responce.IsHacked)
                {
                    _hackScanner.EmailHackedInfo(requestedAccount.Email).GetAwaiter().GetResult()?.FromSites?.ForEach(x => isHacked = isHacked + "List: " + x.Site + " When: " + x.LastDate.ToString() + ". ");
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(new AccountActionResponse()
                {
                    Accounts = GetMyAccount(new BaseRequest()
                    {
                    }, savedAccount.AccountId).Accounts, WarningMessages = new List <string>()
                    {
                        "Service Not Avalable Now"
                    }
                });
            }
            return(new AccountActionResponse()
            {
                Accounts = new List <AccountDto>()
                {
                    requestedAccount
                }, WarningMessages = string.IsNullOrWhiteSpace(isHacked) ? new List <string>()
                {
                    "Accound is Safe"
                } : new List <string>()
                {
                    "Accound is Hack You mast Change Password", JsonConvert.SerializeObject(isHacked)
                }
            });
        }
        private AccountActionResponse ActionRemoveAccountFunc(AccountDto savedAccount, AccountDto requestedAccount, AccountActionRequest request, string Role)
        {
            AccountDto accountToDelete = _baseService.GetAccountById(requestedAccount.AccountId, false);

            accountToDelete.Passwords.ForEach(password =>
            {
                password = _baseService.GetPassword(password.PasswordId);
                _baseService.RemovePassword(password);
            });
            _baseService.RemoveAccount(accountToDelete);

            return(new AccountActionResponse()
            {
                Accounts = _baseService.GetAccounts(request).ToList()
            });
        }
 private AccountActionResponse ActionGetAccountAndPasswordFunc(AccountDto savedAccount, AccountDto requestedAccount, AccountActionRequest request, string Role)
 {
     request.Account = null;
     return(new AccountActionResponse()
     {
         Accounts = _baseService.GetAccounts(request).ToList()
     });
 }
        private AccountActionResponse ActionGetAccountFunc(AccountDto savedAccount, AccountDto requestedAccount, AccountActionRequest request, string Role)
        {
            List <PasswordDto> passwords = new List <PasswordDto>();

            savedAccount.Passwords.ForEach(x => passwords.Add(_baseService.GetPassword(x.PasswordId)));
            savedAccount.Passwords = passwords;
            return(new AccountActionResponse()
            {
                Accounts = new List <AccountDto>()
                {
                    savedAccount
                }
            });
        }
        private AccountActionResponse ActionSeveAccountFunc(AccountDto savedAccount, AccountDto requestedAccount, AccountActionRequest request, string Role)
        {
            AccountDto resultAccount = new AccountDto();

            request.Account = resultAccount;
            List <AccountDto> accountsList = _baseService.GetAccounts(request).ToList();

            //if exist then update
            if (accountsList.Find(x => x.UserName == requestedAccount.UserName || x.AccountId == requestedAccount.AccountId) != null)
            {
                requestedAccount.Passwords.ForEach(x =>
                {
                    _baseService.UpdatePassword(x);
                });
                resultAccount = _baseService.UpdateAccount(requestedAccount, Role, false);
            }
            else
            {
                requestedAccount.AccountId = Guid.NewGuid();
                requestedAccount.Passwords.ForEach(x =>
                {
                    _baseService.AddNewPassword(x);
                });
                resultAccount = _baseService.AddNewAccount(requestedAccount);
            }

            return(new AccountActionResponse()
            {
                Accounts = new List <AccountDto>()
                {
                    resultAccount
                }
            });
        }