public async Task <OrganizationPersonResult> AddExistingPerson(IAgencyOwner agencyOwner, AddExistingPersonInput input) { _logger.LogInformation(GetLogMessage("Organization: {0}; Email: {1}"), agencyOwner.OrganizationId, input.EmailAddress); var retVal = new OrganizationPersonResult() { OrganizationId = agencyOwner.OrganizationId }; var foundPerson = await _accountManager.FindByEmailAsync(input.EmailAddress); if (foundPerson != null) { _logger.LogDebug(GetLogMessage("Person Found: {0}"), foundPerson.Id); var orgPersonInput = new OrganizationPersonInput() { PersonId = foundPerson.Id }.InjectFrom(input) as OrganizationPersonInput; retVal = await Create(orgPersonInput, agencyOwner.OrganizationId); _logger.LogDebug(GetLogMessage("Person Result: {@result}"), retVal); } else { _logger.LogWarning(GetLogMessage("User does not exist")); } return(retVal); }
public async Task <OrganizationPersonResult> Update(OrganizationPersonInput input, Guid organizationId) { _logger.LogInformation(GetLogMessage($@"For Person: {input.PersonId}, For Organization: {organizationId}")); var retVal = new OrganizationPersonResult() { PersonId = input.PersonId, OrganizationId = organizationId }; return(await Task.FromResult(retVal)); }
public async Task <OrganizationPersonResult> Create(CreateOrganizationPersonInput input, Guid organizationId, Guid?affiliateOrganizationId, bool checkValidation = true) { _logger.LogInformation(GetLogMessage("Organization Id: {0}"), organizationId); var isNotValid = CheckValidation(input, out OrganizationPersonResult retVal); if (isNotValid) { return(retVal); } var result = await _personService .CreatePerson(input, input.RecruiterId, input.MarketerId, affiliateOrganizationId); _logger.LogDebug(GetLogMessage("Person: {@result}"), result); if (result.Succeeded) { if (result.PersonId != null) { var orgPersonInput = new OrganizationPersonInput() { RecruiterBonus = input.RecruiterBonus, MarketerBonus = input.MarketerBonus, PersonId = result.PersonId.Value, }.InjectFrom(input) as OrganizationPersonInput; retVal = await Create(orgPersonInput, organizationId); } else { _logger.LogWarning(GetLogMessage("Person result is in an invalid state")); } } else { retVal.ErrorMessage = result.ErrorMessage; _logger.LogWarning(GetLogMessage(retVal.ErrorMessage)); _logger.LogWarning(GetLogMessage("Unable to promote candidate")); } return(retVal); }
public static OrganizationPerson CreateOrgPerson(this IRepositoryAsync <OrganizationPerson> repo, OrganizationPersonInput input, Guid organizationId) { var entity = new OrganizationPerson { Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, PersonId = input.PersonId, OrganizationId = organizationId, IsOrganizationOwner = input.IsCustomer, IsDefault = true, IsDeleted = false, Status = PersonStatus.Active, ObjectState = ObjectState.Added, AffiliateCode = Guid.NewGuid() .ToString() .Substring(0, 5) .ToUpper(), Customer = input.IsCustomer ? new OrganizationCustomer() { CustomerId = input.PersonId, OrganizationId = organizationId, IsDefault = input.IsCustomer, ObjectState = ObjectState.Added } : null, Contractor = input.IsContractor ? new OrganizationContractor() { ContractorId = input.PersonId, ContractorStream = input.ContractorStream.GetValueOrDefault(), OrganizationId = organizationId, ObjectState = ObjectState.Added } : null, AccountManager = input.IsAccountManager ? new OrganizationAccountManager() { AccountManagerId = input.PersonId, AccountManagerStream = input.AccountManagerStream.GetValueOrDefault(), OrganizationId = organizationId, ObjectState = ObjectState.Added } : null, ProjectManager = input.IsProjectManager ? new OrganizationProjectManager() { ProjectManagerId = input.PersonId, OrganizationId = organizationId, ProjectManagerStream = input.ProjectManagerStream.GetValueOrDefault(), ObjectState = ObjectState.Added } : null, Recruiter = input.IsRecruiter ? new OrganizationRecruiter() { RecruiterId = input.PersonId, OrganizationId = organizationId, RecruiterStream = input.RecruiterStream.GetValueOrDefault(), RecruiterBonus = input.RecruiterBonus.GetValueOrDefault(), ObjectState = ObjectState.Added } : null, Marketer = input.IsMarketer ? new OrganizationMarketer() { MarketerId = input.PersonId, OrganizationId = organizationId, Created = DateTimeOffset.UtcNow, MarketerStream = input.MarketerStream.GetValueOrDefault(), MarketerBonus = input.MarketerBonus.GetValueOrDefault(), ObjectState = ObjectState.Added } : null }.InjectFrom(input) as OrganizationPerson; repo.Insert(entity); return(entity); }
public async Task <OrganizationPersonResult> Create(OrganizationPersonInput input, Guid organizationId) { _logger.LogTrace(GetLogMessage($@"For Person: {input.PersonId}, For Organization: {organizationId}")); var retVal = new OrganizationPersonResult() { OrganizationId = organizationId, PersonId = input.PersonId }; var person = _personService.Get(input.PersonId); var organization = _organizationRepository.Queryable() .FirstOrDefaultAsync(x => x.Id == organizationId); await Task.WhenAll(person, organization); if (person.Result == null || organization.Result == null) { retVal.ErrorMessage = "Person or Organization is invalid"; return(retVal); } var organizationPerson = await Repository.Queryable() .IgnoreQueryFilters() .FirstOrDefaultAsync(x => x.PersonId == input.PersonId && x.OrganizationId == organizationId); var records = 0; if (organizationPerson != null) { if (organizationPerson.IsDeleted) { organizationPerson.IsDeleted = false; organizationPerson.UpdatedById = _userInfo.UserId; organizationPerson.CreatedById = _userInfo.UserId; Repository.Update(organizationPerson); records = Repository.Commit(); } } else { organizationPerson = Repository.CreateOrgPerson(input, organizationId); records = Repository.Commit(); } _logger.LogDebug(GetLogMessage("{0} records updated"), records); if (records > 0) { retVal.Succeeded = true; retVal.PersonId = organizationPerson.PersonId; await Task.Run(() => { RaiseEvent(new OrganizationPersonCreatedEvent { OrganizationId = organizationPerson.OrganizationId, PersonId = organizationPerson.PersonId }); }); } else { _logger.LogWarning(GetLogMessage("Unable to create organization person")); } return(retVal); }