Exemplo n.º 1
0
        public SimpleReturnDTO CreateNewLender(Lender entity)
        {
            SimpleReturnDTO simpleReturnDto = new SimpleReturnDTO();

            try
            {
                var isDuplicated = FindBy(x => x.Email.Equals(entity.Email)).Any();

                if (isDuplicated)
                {
                    simpleReturnDto.ErrorKey     = "DuplicateEmail";
                    simpleReturnDto.ErrorMessage = "DuplicateEmail";
                    simpleReturnDto.ErrorType    = ErrorType.Register;
                }
                else
                {
                    entity.DiscriminatorType = DiscriminatorEnum.Lender;

                    if (entity.SWIFT == null)
                    {
                        string zip    = entity.IBAN.Substring(4, 4);
                        var    result = _bankManager.FindBy(x => x.IbanCode.Equals(zip)).ToList();
                        entity.SWIFT = result.FirstOrDefault()?.SwiftCode;
                    }

                    if (!entity.Banks.Any() || !entity.Banks.Any(x => x.Bank.SwiftCode.Equals(entity.SWIFT)))
                    {
                        var bank = _bankManager.GetAll().FirstOrDefault(x => x.SwiftCode.Equals(entity.SWIFT));

                        entity.Banks.Add(new PayLend.Core.Entities.BankUser
                        {
                            IBAN    = entity.IBAN,
                            Bank    = bank,
                            NIB     = entity.IBAN,
                            Default = true,
                        });
                    }


                    _repository.Create(entity);
                    _bankUserManager.Create(entity.Banks.FirstOrDefault());
                    //this._repository.Create(entity);
                    //this._repository.SaveChanges();

                    var permissions = _repository.GetAll <Permission>(x => x.CategoryID == 5 && x.isVisible == true).ToList();

                    foreach (var item in permissions)
                    {
                        _userPermissionManager.Create(new PayLend.Core.Entities.Perfil.User_Permission {
                            PayLendUser = entity, Permission = item, Active = true, CreatedDate = DateTime.Now
                        });
                    }

                    var currency = _repository.Get <Currency>(11);
                    _payLendCardManager.Create(new PayLend.Core.Entities.PayLendCard
                    {
                        CardNumber       = (entity.CountryId.ToString() + (entity.Id.ToString().PadLeft(000000, '0'))),
                        PayLendUser      = entity,
                        Active           = true,
                        CardFriendlyName = "Conta Paylend",
                        Currency         = currency,
                        Default          = true
                    });

                    //this._repository.SaveChanges();
                }

                return(simpleReturnDto);
            }
            catch (Exception e)
            {
                simpleReturnDto.ErrorMessage = e.Message;
                return(simpleReturnDto);
            }
        }