public async Task <IActionResult> CreateAccount(
            [FromRoute] Guid organizationId,
            [FromBody] NewCustomerAccountInput model)
        {
            var account = await _accountService
                          .Create(_agencyOwner, model);

            return(Ok(account));
        }
Exemple #2
0
        public async Task <CustomerAccountResult> Create(
            IProviderAgencyOwner ao,
            NewCustomerAccountInput model)
        {
            _logger.LogInformation(GetLogMessage("PAO: {0}; Input: {@input};"), ao.OrganizationId, model);

            var accountManager = await _accountManagerService
                                 .GetAccountManagerOrDefault <AgencyOwnerOrganizationAccountManagerOutput>
                                     (ao.OrganizationId, model.AccountManagerId);

            model.PhoneNumber = !string.IsNullOrEmpty(model.PhoneNumber?.Trim()) ? model.PhoneNumber.Trim() : null;

            return(CheckValidation(model) ?? await CreateInternal(accountManager, model));
        }
Exemple #3
0
        public async Task <CustomerAccountResult> Create(
            IOrganizationAccountManager am,
            NewCustomerAccountInput model, bool checkValidation = true)
        {
            _logger.LogInformation(GetLogMessage("AM: {0}; Input: {@input};"), am.OrganizationId, model);

            model.PhoneNumber = !string.IsNullOrEmpty(model.PhoneNumber?.Trim()) ? model.PhoneNumber.Trim() : null;

            if (!checkValidation)
            {
                return(await CreateInternal(am, model));
            }

            return(CheckValidation(model) ?? await CreateInternal(am, model));
        }
Exemple #4
0
        private CustomerAccountResult CheckValidation(NewCustomerAccountInput model)
        {
            bool isPhoneExists        = false;
            bool isOrganizationExists = false;
            bool isEmailExists        = false;

            if (!string.IsNullOrEmpty(model.PhoneNumber?.Trim()))
            {
                _logger.LogInformation(GetLogMessage("Phone Number validation : {0}"), model.PhoneNumber);
                isPhoneExists = _applicationUsers.Queryable().Any(a => a.PhoneNumber == model.PhoneNumber);
            }

            if (!string.IsNullOrEmpty(model.EmailAddress?.Trim()))
            {
                _logger.LogInformation(GetLogMessage("Email validation : {0}"), model.EmailAddress);
                isEmailExists = _applicationUsers.Queryable().Any(a => a.Email == model.EmailAddress);
            }

            if (!string.IsNullOrEmpty(model.OrganizationName?.Trim()))
            {
                _logger.LogInformation(GetLogMessage("Organization Name validation : {0}"), model.OrganizationName);
                isOrganizationExists = _organizations.Queryable().Any(a => a.Name == model.OrganizationName);
            }

            if (!isPhoneExists && !isOrganizationExists && !isEmailExists)
            {
                return(null);
            }

            string errorMessage = GetErrorMessage(isPhoneExists, isOrganizationExists, isEmailExists);

            _logger.LogInformation(GetLogMessage(errorMessage));

            return(new CustomerAccountResult
            {
                Succeeded = false,
                ErrorMessage = errorMessage
            });
        }
Exemple #5
0
        private async Task <CustomerAccountResult> CreateInternal(IOrganizationAccountManager am,
                                                                  NewCustomerAccountInput model)
        {
            var retVal = new CustomerAccountResult();

            _logger.LogInformation(GetLogMessage("AM: {0}; Input: {@input};"), am.OrganizationId, model);

            model.AccountManagerId = am.AccountManagerId;

            var person = await _personService
                         .CreatePerson(model, null, model.MarketerId, model.MarketerOrganizationId ?? am.OrganizationId);

            if (person.Succeeded)
            {
                _logger.LogDebug(GetLogMessage("Person was created successfully"));

                var result = await _organizationService.CreateOrganization(am, new OrganizationCreateInput()
                {
                    Name          = model.OrganizationName,
                    Description   = string.Empty,
                    Iso2          = model.Iso2,
                    ProvinceState = model.ProvinceState,
                }, person.PersonId.Value);

                if (result.Succeeded)
                {
                    _logger.LogWarning(GetLogMessage("Organization was created successfully"));

                    retVal.Succeeded                    = true;
                    retVal.AccountManagerId             = model.AccountManagerId;
                    retVal.AccountManagerOrganizationId = am.OrganizationId;
                    retVal.CustomerId                   = person.PersonId.Value;
                    retVal.CustomerOrganizationId       = result.OrganizationId.Value;

                    if (result?.OrganizationId != null)
                    {
                        var m = new CustomerAccountInput()
                        {
                            PaymentTermId                = model.PaymentTermId.GetValueOrDefault(1),
                            AccountManagerId             = am.AccountManagerId,
                            AccountManagerOrganizationId = am.OrganizationId,
                            CustomerId             = person.PersonId.Value,
                            CustomerOrganizationId = result.OrganizationId.Value,
                            AutoApproveTimeEntries = model.AutoApproveTimeEntries,
                        };



                        return(await Create(m));
                    }
                }
                else
                {
                    retVal.ErrorMessage = result.ErrorMessage;
                    _logger.LogWarning(GetLogMessage("unable to create organization"));
                }
            }
            else
            {
                retVal.ErrorMessage = person.ErrorMessage;
                _logger.LogWarning(GetLogMessage("unable to create person"));
            }

            return(retVal);
        }