Example #1
0
 public void Save(CustomerImport customerImport)
 {
     using (var transaction = Connection.BeginTransaction())
     {
         customerImportRepository.Save(customerImport);
     }
 }
Example #2
0
        private bool IsMemberExists(CustomerImport client)
        {
            CustomerImport customerImport = null;

            client.HandleCustomer();

            if (client.Email.IsValidEmail())
            {
                customerImport = customerImportRepository.GetByEmail(client.Email).FirstOrDefault();
            }

            if ((customerImport.IsNull() || customerImport.AccountCode.IsEmpty()) && client.DisplayDocument.IsValidCPF())
            {
                customerImport = customerImportRepository.GetByCPF(client.DisplayDocument).FirstOrDefault();
            }

            if ((customerImport.IsNull() || customerImport.AccountCode.IsEmpty()) && client.DisplayDocument.IsValidCNPJ())
            {
                customerImport = customerImportRepository.GetByCNPJ(client.DisplayDocument).FirstOrDefault();
            }

            if (!customerImport.IsNull() && !customerImport.AccountCode.IsEmpty())
            {
                return(true);
            }

            var account = new Account()
            {
                Email    = client.Email,
                Document = client.DisplayDocument,
                Login    = client.Email
            };

            return(accountRepository.IsMemberExists(account));;
        }
Example #3
0
        public bool Exists(string username, Guid storeCode)
        {
            CustomerImport customerImport = Get(username, storeCode);

            if (!customerImport.IsNull() && !customerImport.AccountCode.IsEmpty())
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #4
0
        public CustomerImport Get(string username, Guid storeCode)
        {
            CustomerImport customerImport = null;

            if (username.IsValidEmail())
            {
                customerImport = customerImportRepository.GetByEmail(username, storeCode);
            }
            else if (username.IsValidCPF())
            {
                customerImport = customerImportRepository.GetByCPF(username, storeCode);
            }
            else if (username.IsValidCNPJ())
            {
                customerImport = customerImportRepository.GetByCNPJ(username, storeCode);
            }

            return(customerImport);
        }
Example #5
0
        private void SendPasswordRecoveryEmail(CustomerImport customer, Store store, string tokenCode, string urlBack = "", int emailTemplateCode = 0)
        {
            var accountsURL = Config.AccountsSiteURL;

            if (!string.IsNullOrWhiteSpace(accountsURL))
            {
                var input = new object();

                try
                {
                    var output = provider.SendEmail(input);

                    if (!output.IsNull())
                    {
                        notify.Warn("Fail send e-mail - SendPasswordRecoveryEmail - Customer: Message: {0}".ToFormat(output));
                    }
                }
                catch (Exception ex)
                {
                    notify.Error("Fail send e-mail - SendPasswordRecoveryEmail - Customer", ex);
                }
            }
        }
Example #6
0
        public bool SaveAccount(Requisition requisition, Object account, ApplicationStore applicationStore, IConnection connection)
        {
            var fileRequisition = requisition as FileRequisition;

            var line = (string)account;

            var  properties = line.Split(new char[] { '\t' });
            var  message    = new List <string>();
            bool isValid    = true;

            try
            {
                var result = customerImportFileInfraService.ValidCustomer(properties, fileRequisition);

                if (result.Item1)
                {
                    CustomerImport customer    = result.Item3;
                    var            clientValid = customer.isValid();

                    if (clientValid.Item1)
                    {
                        try
                        {
                            if (customer is CompanyImport)
                            {
                                var company = (CompanyImport)customer;
                            }
                            else
                            {
                                var person = (PersonImport)customer;
                            }
                        }
                        catch (Exception ex)
                        {
                            isValid = false;
                            message.Add(ex.Message);
                        }

                        if (isValid)
                        {
                            if (!IsMemberExists(customer))
                            {
                                customerImportRepository.Save(customer);
                            }
                            else
                            {
                                isValid = false;
                                message.Add("Usuário já existe");
                            }
                        }
                    }
                    else
                    {
                        isValid = false;
                        message.AddRange(clientValid.Item2);
                    }
                }
                else
                {
                    isValid = false;
                    message.AddRange(result.Item2);
                }
            }
            catch (Exception ex)
            {
                isValid = false;
                message.Add(string.Format("{0}", ex.TrimMessage()));
            }

            if (!isValid)
            {
                requisition.RequisitionErrors.Add(new RequisitionError()
                {
                    Code          = Guid.NewGuid(),
                    ErrorMessages = message,
                    Email         = properties.Count() > ConstantsFileImport.Email ? properties[ConstantsFileImport.Email] : string.Empty,
                    Name          = properties.Count() > ConstantsFileImport.FirstName ? properties[ConstantsFileImport.FirstName] : string.Empty
                });
            }

            return(isValid);
        }
Example #7
0
        public override string GenerateResetPasswordToken(string email, Guid clientId, string urlBack = "", int emailTemplateCode = 0)
        {
            if (email.IsNullOrWhiteSpace())
            {
                throw new ArgumentException("E-mail não informado");
            }

            ApplicationStore appSto;
            Account          account;
            CustomerImport   customerImport = null;
            string           _tokenCode     = string.Empty;

            using (var transaction = Connection.BeginTransaction())
            {
                try
                {
                    appSto = applicationStoreRepository.GetByClientId(clientId);
                    var accounts = accountRepository.Get(email, appSto, true);

                    accountService.lockedUpMemberPolicy = lockedUpMemberPolicy;
                    accountService.lockMemberPolicy     = lockMemberPolicy;
                    accountService.passwordPolicy       = passwordPolicy;

                    account = accountService.Authenticate(accounts, appSto, false);

                    if (account != null)
                    {
                        var resetPasswordTokenService = resetPasswordTokenFactory.GetResetPasswordTokenService(account);

                        resetPasswordTokenService.lockedUpMemberPolicy = lockedUpMemberPolicy;

                        var token = resetPasswordTokenService.GenerateResetPasswordToken(account, appSto, urlBack);

                        _tokenCode = token.Code.EncodeURIComponent();

                        svcEmail.SendPasswordRecoveryEmailAsync(account, appSto.Store, _tokenCode, token.UrlBack, emailTemplateCode);
                    }
                    else
                    {
                        customerImport = customerImportService.Get(email, appSto.Store.Code);

                        if (customerImport != null)
                        {
                            var resetPasswordTokenService = resetPasswordTokenFactory.GetResetPasswordTokenService(customerImport);

                            var token = resetPasswordTokenService.GenerateResetPasswordToken(customerImport, appSto, urlBack);

                            _tokenCode = token.Code.EncodeURIComponent();

                            customerImport.HandleCustomer();
                            svcEmail.SendPasswordRecoveryEmailAsync(customerImport, appSto.Store, _tokenCode, urlBack, emailTemplateCode);
                        }
                    }

                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
            }

            if (!appSto.IsNull() && (!account.IsNull() || !customerImport.IsNull()))
            {
                using (var transaction = Connection.BeginTransaction())
                {
                    try
                    {
                        var code = !account.IsNull() ? account.Code : customerImport.AccountCode;

                        passwordLogRepository.Save(new PasswordLog(code, PasswordEventLog.RequestRecovery, appSto.Store.Code));

                        transaction.Commit();
                    }
                    catch
                    {
                        transaction.Rollback();
                    }
                }
            }

            return(_tokenCode);
        }
Example #8
0
 public void SendPasswordRecoveryEmailAsync(CustomerImport customer, Store store, string tokenCode, string urlBack = "", int emailTemplateCode = 0)
 {
     Task.Run(() => SendPasswordRecoveryEmail(customer, store, tokenCode, urlBack, emailTemplateCode));
 }
Example #9
0
        public Tuple <bool, List <string>, CustomerImport> ValidCustomer(string[] properties, FileRequisition fileRequisition)
        {
            CultureInfo culture = new CultureInfo("pt-BR");

            Thread.CurrentThread.CurrentUICulture = culture;
            Thread.CurrentThread.CurrentCulture   = culture;

            bool           valid    = true;
            List <string>  messages = new List <string>();
            CustomerImport customer = null;

            if (properties.Length < 19)
            {
                valid = false;
                messages.Add("Linha com quantidade de colunas inválido");
                return(new Tuple <bool, List <string>, CustomerImport>(valid, messages, customer));
            }

            if (properties[ConstantsFileImport.TypeCustomer].Trim().ToLower() == "pf")
            {
                if (properties[ConstantsFileImport.FirstName].Trim().IsNullorEmpty()) //FirstName
                {
                    valid = false;
                    messages.Add("Nome inválido");
                }

                if (properties[ConstantsFileImport.LastName].Trim().IsNullorEmpty()) //LastName
                {
                    valid = false;
                    messages.Add("Sobrenome inválido");
                }

                if (properties[ConstantsFileImport.Document].Trim().IsNullorEmpty() || !properties[ConstantsFileImport.Document].Trim().IsValidCPF()) //CPF
                {
                    valid = false;
                    messages.Add("CPF inválido");
                }

                DateTime dt = DateTime.MinValue;
                DateTime.TryParse(properties[ConstantsFileImport.BirthDate].Trim(), out dt);
                if (properties[ConstantsFileImport.BirthDate].Trim().IsNullorEmpty() || dt == DateTime.MinValue || dt >= DateTime.Now) //BirthDate
                {
                    valid = false;
                    messages.Add("Data de nascimento inválida");
                }

                if (!properties[ConstantsFileImport.Sexo].Trim().IsNullorEmpty() && (properties[ConstantsFileImport.Sexo].Trim().ToLower() != "m" && properties[ConstantsFileImport.Sexo].Trim().ToLower() != "f")) //Sexo
                {
                    valid = false;
                    messages.Add("Gênero inválido");
                }
            }
            else if (properties[ConstantsFileImport.TypeCustomer].Trim().ToLower() == "pj")
            {
                if (properties[ConstantsFileImport.CompanyName].Trim().IsNullorEmpty()) //CompanyName
                {
                    valid = false;
                    messages.Add("Razão Social inválido");
                }

                if (properties[ConstantsFileImport.TradeName].Trim().IsNullorEmpty()) //TradeName
                {
                    valid = false;
                    messages.Add("Nome Fantasia inválido");
                }

                if (properties[ConstantsFileImport.Document].Trim().IsNullorEmpty() || !properties[ConstantsFileImport.Document].Trim().IsValidCNPJ()) //CNPJ
                {
                    valid = false;
                    messages.Add("CNPJ inválido");
                }

                if (properties[ConstantsFileImport.IM].Trim().IsNullorEmpty()) //IM
                {
                    valid = false;
                    messages.Add("IM inválido");
                }

                if (properties[ConstantsFileImport.IE].Trim().IsNullorEmpty()) //IE
                {
                    valid = false;
                    messages.Add("IE inválido");
                }
            }
            else
            {
                valid = false;
                messages.Add("Tipo de usuário inválido");
            }

            if (properties[ConstantsFileImport.Email].Trim().IsNullorEmpty() || !properties[ConstantsFileImport.Email].Trim().IsValidEmail())
            {
                valid = false;
                messages.Add("E-mail inválido");
            }

            Tuple <bool, List <string> > resultAddress = ValidAddress(properties);

            if (!resultAddress.Item1)
            {
                valid = false;
                messages.AddRange(resultAddress.Item2);
            }

            if (valid)
            {
                customer = MakeCustomer(properties, fileRequisition);
            }

            return(new Tuple <bool, List <string>, CustomerImport>(valid, messages, customer));
        }
        /// <summary>
        /// Hàm đọc thông tin file excel.
        /// </summary>
        /// <param name="file">file excel.</param>
        /// <param name="cancellationToken">Token hủy</param>
        /// <returns>Danh sách các khách hàng và lỗi của từng khách hàng.</returns>
        /// CreatedBy: dbhuan (06/05/2021)
        public async Task <List <CustomerImport> > ReadFromExcel(IFormFile formFile, CancellationToken cancellationToken)
        {
            var customersImport = new List <CustomerImport>();

            using (var stream = new MemoryStream())
            {
                await formFile.CopyToAsync(stream, cancellationToken);

                using var package = new ExcelPackage(stream);
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                var            rowCount  = worksheet.Dimension.Rows;

                for (int rowNumber = 3; rowNumber <= rowCount; rowNumber++)
                {
                    var customer = new Customer()
                    {
                        CustomerCode   = GetValue(worksheet.Cells[rowNumber, 1].Value),
                        FullName       = GetValue(worksheet.Cells[rowNumber, 2].Value),
                        MemberCardCode = GetValue(worksheet.Cells[rowNumber, 3].Value),
                        PhoneNumber    = GetValue(worksheet.Cells[rowNumber, 5].Value),
                        DateOfBirth    = ParseDate(worksheet.Cells[rowNumber, 6].Value),
                        CompanyName    = GetValue(worksheet.Cells[rowNumber, 7].Value),
                        CompanyTaxCode = GetValue(worksheet.Cells[rowNumber, 8].Value),
                        Email          = GetValue(worksheet.Cells[rowNumber, 9].Value),
                        Address        = GetValue(worksheet.Cells[rowNumber, 10].Value),
                        Note           = GetValue(worksheet.Cells[rowNumber, 11].Value)
                    };

                    var customerImport = new CustomerImport();

                    if (customersImport.Any())
                    {
                        // check valid.

                        // check customerCode exists on import.
                        var customerCodeExistsOnExcel = customersImport.Where(c => c.Data.CustomerCode == customer.CustomerCode).Any();

                        if (customerCodeExistsOnExcel == true)
                        {
                            customerImport.Errors.Add(Properties.Resources.MsgErrorCustomerCodeExistsOnImport);
                        }

                        // check phoneNumber exists on import.
                        var phoneNumberExistsOnExcel = customersImport.Where(c => c.Data.PhoneNumber == customer.PhoneNumber).Any();


                        if (phoneNumberExistsOnExcel == true)
                        {
                            customerImport.Errors.Add(Properties.Resources.MsgErrorPhoneNumberExistsOnImport);
                        }
                    }

                    // check customerCode tồn tại trên hệ thống.
                    var customerCodeExists = _customerRepository.CheckCustomerCodeExists(customer.CustomerCode);
                    if (customerCodeExists == true)
                    {
                        customerImport.Errors.Add(Properties.Resources.MsgErrorCustomerCodeExists);
                    }

                    // check phoneNumber tồn tại trên hệ thống.
                    var phoneNumberExists = _customerRepository.CheckPhoneNumberExists(customer.PhoneNumber);
                    if (phoneNumberExists == true)
                    {
                        customerImport.Errors.Add(Properties.Resources.MsgErrorPhoneNumberExists);
                    }

                    // check nhóm khách hàng có tồn tại trên hệ thống.
                    string customerGroupName = GetValue(worksheet.Cells[rowNumber, 4].Value);

                    var customerGroup = _customerRepository.GetCustomerGroup(customerGroupName);
                    if (customerGroup == null)
                    {
                        customerImport.Errors.Add(Properties.Resources.MsgErrorCustomerGroupNotExists);
                    }
                    else
                    {
                        customer.CustomerGroupId   = customerGroup.CustomerGroupId;
                        customer.CustomerGroupName = customerGroupName;
                    }

                    customerImport.Data = customer;
                    customersImport.Add(customerImport);
                }
            }
            return(customersImport);
        }