private Result CheckLoginAndDataProvider(Guid guid, Operations operation)
        {
            if (DataProvider == null)
            {
                return(Result.NotInitialized());
            }

            var permitionResult = LogonManager.CheckPermission(guid, operation);

            switch (permitionResult)
            {
            case PermissionResult.Ok:
                return(new Result(true));

            case PermissionResult.AccessDeny:
                return(Result.AccsessDeny());

            case PermissionResult.DoesntLogined:
                return(Result.DoesntLogined());

            default:
                var message = string.Format("Не известный результат операции проверки доступа Result = {0}", permitionResult);
                return(new Result(false)
                {
                    Message = message
                });
            }
        }
        public Result <LoginInfo> Login(string login, string pass, RoleTypes roleType)
        {
            SessionInfo sessionInfo;
            var         logonResult = LogonManager.Login(login, pass, roleType, out sessionInfo);

            switch (logonResult)
            {
            case LogonResult.Ok:
                return(new Result <LoginInfo>(sessionInfo.GetLoginInfo()));

            case LogonResult.AlreadyLogined:
                LogonManager.Logout(sessionInfo.Guid);
                return(Login(login, pass, roleType));

            case LogonResult.WrongLoginOrPass:
                return(new Result <LoginInfo>(Result.LoginOrPassIsWrong()));

            case LogonResult.WrongRole:
                return(new Result <LoginInfo>(Result.AccsessDeny()));

            default:
                return(new Result <LoginInfo>(false)
                {
                    Message = "Ошибка: Не известный результат идентификации"
                });
            }
        }
        public Result <ClientInfo> PayInToAccount(long clientId, int operationCode, Guid guid)
        {
            var result = CheckLoginAndDataProvider(guid, Operations.PayInToAccount);

            if (!result.IsSucssied)
            {
                return(new Result <ClientInfo>(result));
            }

            OperationInfo operationInfo;

            lock (_payInCodes)
            {
                if (!_payInCodes.TryGetValue(clientId, out operationInfo) || operationInfo.Code != operationCode)
                {
                    var accsessDenyResult = Result.AccsessDeny();
                    accsessDenyResult.Message = Result.CodeErrorMsg;
                    return(new Result <ClientInfo>(accsessDenyResult));
                }

                _payInCodes.Remove(clientId);
            }

            ClientInfo clientInfo;

            if (!DataProvider.TryPayInToAccount(clientId, operationInfo.Summ, out clientInfo))
            {
                return(new Result <ClientInfo>(false));
            }

            return(new Result <ClientInfo>(clientInfo));
        }