Ejemplo n.º 1
0
        public IActionResult SaveAndApproveTokenDeactivationOrder([FromBody] TokenOperationRequest request)
        {
            if (ModelState.IsValid)
            {
                SingleResponse <long> response        = new SingleResponse <long>();
                HBToken            hBToken            = new HBToken();
                ActionResult       result             = new ActionResult();
                AuthorizedCustomer authorizedCustomer = _cacheHelper.GetAuthorizedCustomer();
                _xBService.Use(client =>
                {
                    hBToken = client.GetHBTokenWithSerialNumberAsync(request.TokenSerial).Result;
                });
                if (hBToken == null)
                {
                    byte language = 1;

                    //Լեզու
                    if (!string.IsNullOrEmpty(Request.Headers["language"]))
                    {
                        byte.TryParse(Request.Headers["language"], out language);
                    }

                    result.ResultCode    = ResultCode.ValidationError;
                    response.Description = (Languages)language == Languages.hy ? "Տվյալ համարով տոկեն գոյություն չունի։" : "Token not exist.";
                }
                else
                {
                    //string sessionId = Guid.NewGuid().ToString();
                    //AuthorizeAnonymousMethods(hBToken.HBUser.CustomerNumber, sessionId, hBToken.HBUser.ID, hBToken.HBUser.UserName);
                    //Request.Headers.Add("SessionId", sessionId);

                    HBServletRequestOrder hBServletRequestOrder = new HBServletRequestOrder
                    {
                        RegistrationDate = DateTime.Now,
                        OperationDate    = _xBService.GetCurrentOperDay(),
                        ServletAction    = HBServletAction.DeactivateToken,
                        Type             = OrderType.HBServletRequestTokenDeactivationOrder,
                        SubType          = 1,
                        CustomerNumber   = authorizedCustomer.CustomerNumber,
                        ServletRequest   = null,
                        HBtoken          = hBToken,
                        Source           = SourceType.MobileBanking,
                        FilialCode       = 22000
                    };

                    ActionResult saveActionResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                    response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                    response.Result      = saveActionResult.Id;
                    response.Description = utils.GetActionResultErrors(saveActionResult.Errors);
                }
                return(ResponseExtensions.ToHttpResponse(response));
            }
            else
            {
                return(ValidationError.GetValidationErrorResponse(ModelState));
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SaveAndApproveTokenReplacementOrder([FromBody] TokenOperationRequest request)
        {
            if (ModelState.IsValid)
            {
                double oldDayLimit   = 400000;
                double oldTransLimit = 400000;
                if (!request.IsNewHbUser)
                {
                    SingleResponse <long> response = new SingleResponse <long>();
                    byte language = 1;
                    if (!string.IsNullOrEmpty(Request.Headers["language"]))
                    {
                        byte.TryParse(Request.Headers["language"], out language);
                    }
                    AuthorizedCustomer authorizedCustomer = _cacheHelper.GetAuthorizedCustomer();
                    ulong              id             = _xBInfoService.GetLastKeyNumber(22000, 74);
                    List <HBToken>     activehBTokens = new List <HBToken>();
                    HBApplicationOrder order          = new HBApplicationOrder()
                    {
                        Source              = SourceType.MobileBanking,
                        HBApplication       = new HBApplication(),
                        HBApplicationUpdate = new HBApplicationUpdate
                        {
                            AddedItems       = new List <object>(),
                            DeactivatedItems = new List <object>(),
                            UpdatedItems     = new List <object>()
                        }
                    };
                    _xBService.Use(client =>
                    {
                        activehBTokens = client.GetFilteredHBTokensAsync(authorizedCustomer.UserId, HBTokenQuality.Active).Result;
                    });
                    oldDayLimit   = (activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault()?.DayLimit ?? 0) != 0 ? activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault().DayLimit : 400000;
                    oldTransLimit = (activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault()?.TransLimit ?? 0) != 0 ? activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault().TransLimit : 400000;
                    ActionResult result = _xBService.SaveAndApproveHBApplicationNewOrder(order, out HBToken hBToken, id, authorizedCustomer.UserId, oldDayLimit, oldTransLimit);
                    if (result.ResultCode == (ResultCode)ResultCodes.normal)
                    {
                        hBToken.HBUser.IsCas = true;
                        HBServletRequestOrder hBServletRequestOrder = new HBServletRequestOrder
                        {
                            RegistrationDate = DateTime.Now,
                            OperationDate    = _xBService.GetCurrentOperDay(),
                            ServletAction    = HBServletAction.ActivateToken,
                            Type             = OrderType.HBServletRequestTokenActivationOrder,
                            SubType          = 1,
                            CustomerNumber   = authorizedCustomer.CustomerNumber,
                            ServletRequest   = null,
                            Source           = SourceType.MobileBanking,
                            PhoneNumber      = GetCustomerRegPhone(authorizedCustomer.CustomerNumber),
                            HBtoken          = new HBToken
                            {
                                TokenNumber  = hBToken.TokenNumber,
                                DayLimit     = oldDayLimit,
                                TransLimit   = oldTransLimit,
                                ID           = hBToken.ID,
                                GID          = hBToken.GID,
                                TokenType    = hBToken.TokenType,
                                HBUser       = hBToken.HBUser,
                                IsRegistered = true
                            },
                            FilialCode = 22000
                        };
                        ActionResult saveActionResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                        if (saveActionResult.ResultCode == ResultCode.DoneAndReturnedValues || saveActionResult.ResultCode == ResultCode.Normal) //եթե հին մոբայլի user -  ը (iscas == false)  ստանում է նոր տոկեն աֆտոմատ սարքում ենք նոր մոբայլի user
                        {
                            _xBService.MigrateOldUserToCas(hBToken.HBUser.ID);
                            response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                            response.Result      = saveActionResult.Id;
                            response.Description = (Languages)language == Languages.hy ? "Ակտիվացման կոդը ուղարկվել է Ձեր էլ. փոստին, իսկ PIN կոդը կստանանք SMS-ի տեսքով:" : "The activation code was sent to your email. PIN code was sent by SMS.";
                        }
                        else
                        {
                            response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                            response.Result      = saveActionResult.Id;
                            response.Description = saveActionResult.Errors[0].Code == 0 ? saveActionResult.Errors[0].Description : _xBService.GetTerm(saveActionResult.Errors[0].Code, null, (Languages)language);
                        }
                    }
                    else
                    {
                        response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode);
                        response.Result      = result.Id;
                        response.Description = _xBService.GetTerm(result.Errors[0].Code, null, Languages.hy);
                    }
                    return(ResponseExtensions.ToHttpResponse(response));
                }
                else
                {
                    SingleResponse <long>      response     = new SingleResponse <long>();
                    ActionResult               result       = new ActionResult();
                    List <HBActivationRequest> hBActivation = new List <HBActivationRequest>();
                    HBApplicationOrder         order        = new HBApplicationOrder()
                    {
                        Source = SourceType.MobileBanking
                    };
                    HBActivationOrder      hBActivationOrder = new HBActivationOrder();
                    List <HBToken>         hBTokens          = new List <HBToken>();
                    HBToken                hBToken           = new HBToken();
                    HBApplication          hBApplication     = new HBApplication();
                    Task <List <HBToken> > hBTokensTask      = null;
                    Task <HBToken>         hBTokenTask       = null;
                    Task <HBApplication>   hBApplicationTask = null;
                    ulong id = _xBInfoService.GetLastKeyNumber(22000, 74);
                    AuthorizedCustomer authorizedCustomer = _cacheHelper.GetAuthorizedCustomer();
                    byte language = 1;
                    if (!string.IsNullOrEmpty(Request.Headers["language"]))
                    {
                        byte.TryParse(Request.Headers["language"], out language);
                    }

                    _xBService.Use(client =>
                    {
                        hBTokensTask = client.GetFilteredHBTokensAsync(authorizedCustomer.UserId, HBTokenQuality.NotDefined);
                    });
                    _xBService.Use(client =>
                    {
                        hBTokenTask = client.GetHBTokenWithSerialNumberAsync(request.TokenSerial);
                    });
                    _xBService.Use(client =>
                    {
                        hBApplicationTask = client.GetHBApplicationAsync();
                    });
                    hBTokens      = await hBTokensTask;
                    hBApplication = await hBApplicationTask;
                    hBToken       = await hBTokenTask;
                    oldDayLimit   = (hBToken?.DayLimit ?? 0) != 0 ? hBToken.DayLimit : 400000;
                    oldTransLimit = (hBToken?.TransLimit ?? 0) != 0 ? hBToken.TransLimit : 400000;
                    if (authorizedCustomer.TypeOfClient != 6 && hBTokens.All(x => x.TokenType == HBTokenTypes.Token) && hBApplication?.ContractDate < new DateTime(2015, 7, 25)) // Ն-19051
                    {
                        response.ResultCode  = ResultCodes.validationError;
                        response.Description = (Languages)language == Languages.hy ? "Փոխարինման հայտը հնարավոր չէ ուղարկել: Խնդրում ենք դիմել Բանկ:" : "Can't send replacement request. Please contact the Bank.";
                        return(ResponseExtensions.ToHttpResponse(response));
                    }
                    if (hBToken == null)
                    {
                        result.ResultCode    = ResultCode.ValidationError;
                        response.Description = (Languages)language == Languages.hy ? "Տվյալ համարով տոկեն գոյություն չունի։" : "Token not exist.";
                        return(ResponseExtensions.ToHttpResponse(response));
                    }
                    HBServletRequestOrder hBServletRequestOrder = new HBServletRequestOrder
                    {
                        RegistrationDate = DateTime.Now,
                        OperationDate    = _xBService.GetCurrentOperDay(),
                        ServletAction    = HBServletAction.DeactivateToken,
                        Type             = XBS.OrderType.HBServletRequestTokenDeactivationOrder,
                        SubType          = 1,
                        CustomerNumber   = authorizedCustomer.CustomerNumber,
                        ServletRequest   = null,
                        Source           = SourceType.MobileBanking,
                        HBtoken          = hBToken,
                        FilialCode       = 22000
                    };
                    ActionResult saveActionResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                    if (saveActionResult.ResultCode == (ResultCode)ResultCodes.normal)
                    {
                        result = _xBService.SaveAndApproveHBApplicationReplacmentOrder(order, ref hBToken, id, authorizedCustomer.UserId, request.TokenSerial, oldDayLimit, oldTransLimit);
                        if (result.ResultCode == (ResultCode)ResultCodes.normal)
                        {
                            hBServletRequestOrder.RegistrationDate = DateTime.Now;
                            hBServletRequestOrder.OperationDate    = _xBService.GetCurrentOperDay();
                            hBServletRequestOrder.ServletAction    = HBServletAction.ActivateToken;
                            hBServletRequestOrder.Type             = OrderType.HBServletRequestTokenActivationOrder;
                            hBServletRequestOrder.SubType          = 1;
                            hBServletRequestOrder.Source           = SourceType.MobileBanking;
                            hBServletRequestOrder.CustomerNumber   = authorizedCustomer.CustomerNumber;
                            hBServletRequestOrder.PhoneNumber      = GetCustomerRegPhone(authorizedCustomer.CustomerNumber);
                            hBServletRequestOrder.ServletRequest   = null;
                            hBServletRequestOrder.HBtoken          = new HBToken
                            {
                                TokenNumber  = hBToken.TokenNumber,
                                DayLimit     = oldDayLimit,
                                TransLimit   = oldTransLimit,
                                ID           = hBToken.ID,
                                GID          = hBToken.GID,
                                TokenType    = hBToken.TokenType,
                                HBUser       = hBToken.HBUser,
                                IsRegistered = true
                            };
                            hBServletRequestOrder.FilialCode = 22000;

                            ActionResult saveTokenResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                            if ((saveTokenResult.ResultCode == ResultCode.DoneAndReturnedValues || saveTokenResult.ResultCode == ResultCode.Normal)) //եթե հին մոբայլի user -  ը (iscas == false)  ստանում է նոր տոկեն աֆտոմատ սարքում ենք նոր մոբայլի user
                            {
                                response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveTokenResult.ResultCode);
                                response.Result      = saveTokenResult.Id;
                                response.Description = (Languages)language == Languages.hy ? "Ակտիվացման կոդը ուղարկվել է Ձեր էլ. փոստին, իսկ PIN կոդը կստանանք SMS-ի տեսքով:" : "The activation code was sent to your email. PIN code was sent by SMS.";
                            }
                            else
                            {
                                response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode);
                                response.Result      = result.Id;
                                response.Description = _xBService.GetTerm(saveTokenResult.Errors[0].Code, null, (Languages)language);
                            }
                        }
                        else
                        {
                            response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode);
                            response.Result      = result.Id;
                            response.Description = _xBService.GetTerm(result.Errors[0].Code, null, (Languages)language);
                        }
                    }
                    else
                    {
                        response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                        response.Result      = saveActionResult.Id;
                        response.Description = _xBService.GetTerm(saveActionResult.Errors[0].Code, null, (Languages)language);
                    }
                    return(ResponseExtensions.ToHttpResponse(response));
                }
            }
            else
            {
                return(ValidationError.GetValidationErrorResponse(ModelState));
            }
        }