示例#1
0
		public void TestLoanLegals() {
			//NL_Loans l = new NL_Loans();
			//l.InterestRate = 3.5m;
			//l.IssuedTime = DateTime.UtcNow;
			//l.CreationTime = DateTime.UtcNow;
			//l.LoanSourceID = 1;
			//l.LoanStatusID = 2;
			//l.Position = 1;
			//var sss = l.ToString();
			//Console.WriteLine(sss);
			NL_LoanLegals loanLegals = new NL_LoanLegals {
				Amount = 20000m,
				RepaymentPeriod = 5,
				SignatureTime = DateTime.UtcNow,
				EUAgreementAgreed = true,
				COSMEAgreementAgreed = true,
				CreditActAgreementAgreed = true,
				PreContractAgreementAgreed = false,
				PrivateCompanyLoanAgreementAgreed = true,
				GuarantyAgreementAgreed = false,
				SignedName = "elina roytman",
				NotInBankruptcy = false
			};
			var s = loanLegals.ToString();
			Console.WriteLine(s);
		}
示例#2
0
        }         // AddOffer

        public NLLongActionResult AddLoanLegals(int userID, int customerID, NL_LoanLegals loanLegals)
        {
            AddLoanLegals s = new AddLoanLegals(customerID, loanLegals);

            s.Context.UserID     = userID;
            s.Context.CustomerID = customerID;
            var amd = ExecuteSync(out s, customerID, userID, customerID, loanLegals);

            return(new NLLongActionResult {
                MetaData = amd,
                Value = s.LoanLegalsID,
                Error = s.Error
            });
        }         // AddLoanLegals
示例#3
0
        public JsonResult LoanLegalSigned(FormCollection collection)
        {
            decimal loanAmount              = Convert.ToDecimal(collection["loanAmount"]);
            int     repaymentPeriod         = Convert.ToInt32(collection["repaymentPeriod"]);
            string  signedName              = collection["signedName"];
            bool    notInBankruptcy         = Convert.ToBoolean(collection["notInBankruptcy"]);
            bool    euAgreementTermsRead    = Convert.ToBoolean(collection["euAgreementTermsRead"]);
            bool    cosmeAgreementTermsRead = Convert.ToBoolean(collection["cosmeAgreementTermsRead"]);
            decimal manualSetupFeePercent   = Convert.ToDecimal(collection["manualSetupFeePercent"]);
            decimal brokerFeePercent        = Convert.ToDecimal(collection["brokerFeePercent"]);

            var dynamicLoanAgreements = new Dictionary <LegalDocsEnums.LoanAgreementTemplateType, bool>();

            foreach (var loanAgreementTemplateName in Enum.GetNames(typeof(LegalDocsEnums.LoanAgreementTemplateType)))
            {
                var key = loanAgreementTemplateName + "TermsRead";

                if (collection.AllKeys.Contains(key))
                {
                    var value = Convert.ToBoolean(collection[key]);

                    dynamicLoanAgreements.Add(
                        (LegalDocsEnums.LoanAgreementTemplateType)Enum.Parse(
                            typeof(LegalDocsEnums.LoanAgreementTemplateType),
                            loanAgreementTemplateName
                            ),
                        value
                        );
                } // if
            }     // for each

            var dynamicLoanAgreementsStringified = new JavaScriptSerializer().Serialize(
                dynamicLoanAgreements.ToDictionary(x => x.Key.DescriptionAttr(), x => x.Value.ToString())
                );

            log.DebugFormat(
                "LoanLegalModel - " +
                "dynamicLoanAgreementsStringified : {0}" +
                "euAgreementTermsRead: {1}" +
                "cosmeAgreementTermsRead: {2}",
                dynamicLoanAgreementsStringified,
                euAgreementTermsRead,
                cosmeAgreementTermsRead
                );

            var cashRequest    = this.context.Customer.LastCashRequest;
            var typeOfBusiness = this.context.Customer.PersonalInfo.TypeOfBusiness.AgreementReduce();

            // Dynamic agreements validation
            foreach (var dynamicLoanAgreement in dynamicLoanAgreements)
            {
                if (dynamicLoanAgreement.Value != true)
                {
                    return(Json(new {
                        error = string.Format("You must agree on {0} agreement", dynamicLoanAgreement.Key.DescriptionAttr())
                    }));
                } // if
            }     // for each

            var personalInfo = cashRequest.Customer.PersonalInfo;


            if (personalInfo == null)
            {
                return(Json(new { error = "sign name supplied is incorrect" }));
            }

            // Customer name validation
            const string separator = " ";
            var          FN        = (personalInfo.FirstName != null) ? personalInfo.FirstName.ToLower() : string.Empty;
            var          MN        = (personalInfo.MiddleInitial != null) ? personalInfo.MiddleInitial.ToLower() : String.Empty;
            var          LN        = (personalInfo.Surname != null) ? personalInfo.Surname.ToLower() : string.Empty;

            List <String> nameCombinations = new List <string> {
                string.Format("{0}{3}{1}{3}{2}", FN, MN, LN, separator).Replace(separator + separator, separator),
                string.Format("{0}{3}{2}{3}{1}", FN, MN, LN, separator).Replace(separator + separator, separator),
                string.Format("{1}{3}{0}{3}{2}", FN, MN, LN, separator).Replace(separator + separator, separator),
                string.Format("{1}{3}{2}{3}{0}", FN, MN, LN, separator).Replace(separator + separator, separator),
                string.Format("{2}{3}{0}{3}{1}", FN, MN, LN, separator).Replace(separator + separator, separator),
                string.Format("{2}{3}{1}{3}{0}", FN, MN, LN, separator).Replace(separator + separator, separator),
                string.Format("{0}{2}{1}", FN, MN, separator),
                string.Format("{1}{2}{0}", FN, MN, separator),
            };

            if (signedName == null)
            {
                signedName = string.Empty;
            }

            if (!nameCombinations.Contains(signedName.ToLower()))
            {
                return(Json(new { error = "sign name supplied is incorrect" }));
            }


            bool somethingIsMissing =
                ((cashRequest.LoanSource.Name == LoanSourceName.EU.ToString()) && !euAgreementTermsRead) ||
                ((cashRequest.LoanSource.Name == LoanSourceName.COSME.ToString()) && !cosmeAgreementTermsRead) ||
                !notInBankruptcy;

            if (somethingIsMissing)
            {
                return(Json(new { error = "You must agree to all agreements." }));
            }

            var productSubTypeID = cashRequest.ProductSubTypeID;
            var originId         = cashRequest.Customer.CustomerOrigin.CustomerOriginID;
            var isRegulated      = cashRequest.Customer.PersonalInfo.TypeOfBusiness.IsRegulated();

            var requiredlegalDocsTemplates = this.serviceClient.Instance.GetLegalDocs(
                cashRequest.Customer.Id,
                this.context.UserId,
                originId,
                isRegulated,
                productSubTypeID ?? 0
                ).LoanAgreementTemplates.Select(x => x.TemplateTypeID);

            // Validate sign on the right agreements
            foreach (var requiredlegalDocTemplate in requiredlegalDocsTemplates)
            {
                if (!dynamicLoanAgreements.ContainsKey((LegalDocsEnums.LoanAgreementTemplateType)requiredlegalDocTemplate))
                {
                    return(Json(new { error = "You must agree to all agreements." }));
                }
            } // foreach

            DateTime now = DateTime.UtcNow;

            this.context.Customer.LastCashRequest.LoanLegals.Add(new LoanLegal {
                CashRequest                       = cashRequest,
                Created                           = now,
                EUAgreementAgreed                 = euAgreementTermsRead,
                COSMEAgreementAgreed              = cosmeAgreementTermsRead,
                CreditActAgreementAgreed          = typeOfBusiness == TypeOfBusinessAgreementReduced.Personal,
                PreContractAgreementAgreed        = typeOfBusiness == TypeOfBusinessAgreementReduced.Personal,
                PrivateCompanyLoanAgreementAgreed = typeOfBusiness == TypeOfBusinessAgreementReduced.Business,
                GuarantyAgreementAgreed           = typeOfBusiness == TypeOfBusinessAgreementReduced.Business,
                SignedName                        = signedName,
                NotInBankruptcy                   = notInBankruptcy,
                SignedLegalDocs                   = dynamicLoanAgreementsStringified,
                ManualSetupFeePercent             = manualSetupFeePercent,
                BrokerSetupFeePercent             = brokerFeePercent,
            });

            NL_LoanLegals nlLoanLegals = new NL_LoanLegals {
                Amount                            = loanAmount,
                RepaymentPeriod                   = repaymentPeriod,
                SignatureTime                     = now,
                EUAgreementAgreed                 = euAgreementTermsRead,
                COSMEAgreementAgreed              = cosmeAgreementTermsRead,
                CreditActAgreementAgreed          = typeOfBusiness == TypeOfBusinessAgreementReduced.Personal,
                PreContractAgreementAgreed        = typeOfBusiness == TypeOfBusinessAgreementReduced.Personal,
                PrivateCompanyLoanAgreementAgreed = typeOfBusiness == TypeOfBusinessAgreementReduced.Business,
                GuarantyAgreementAgreed           = typeOfBusiness == TypeOfBusinessAgreementReduced.Business,
                SignedName                        = signedName,
                NotInBankruptcy                   = notInBankruptcy,
                SignedLegalDocs                   = dynamicLoanAgreementsStringified,
                BrokerSetupFeePercent             = brokerFeePercent,
            };

            var nlStrategyLegals = this.serviceClient.Instance.AddLoanLegals(
                this.context.UserId,
                this.context.Customer.Id,
                nlLoanLegals
                );

            //_log.Debug("NL_LoanLegals: ID {0}, Error: {1}", nlStrategyLegals.Value, nlStrategyLegals.Error);

            return(Json(new { }));
        } // LoanLegalSigned
示例#4
0
 public AddLoanLegals(int customerID, NL_LoanLegals loanLegals)
 {
     this.customerID = customerID;
     this.loanLegals = loanLegals;
 }         //constructor