public async Task <AgreementResult> AcceptAgreement(IProviderAgencyOwner providerAgencyOwner, Guid marketingOrganizationId) { _logger.LogInformation(GetLogMessage("Provider: {0}; Marketer: {1}"), providerAgencyOwner.OrganizationId, marketingOrganizationId); var retVal = new AgreementResult() { MarketingOrganizationId = marketingOrganizationId, ProviderOrganizationId = providerAgencyOwner.OrganizationId }; var agreement = await Repository.Queryable() .FirstOrDefaultAsync(x => x.ProviderOrganizationId == providerAgencyOwner.OrganizationId && x.MarketingOrganizationId == marketingOrganizationId); if (agreement == null) { retVal.ErrorMessage = "No agreement found"; return(retVal); } if (agreement.Status != AgreementStatus.AwaitingApproval) { return new AgreementResult() { Succeeded = false, } } ; agreement.Status = AgreementStatus.Approved; agreement.ObjectState = ObjectState.Modified; agreement.Updated = DateTimeOffset.UtcNow; var result = Repository.InsertOrUpdateGraph(agreement, true); _logger.LogDebug(GetLogMessage("{0} records updated in database"), result); if (result > 0) { await Task.Run(() => RaiseEvent(new MarketingAgreementAccepted() { MarketingOrganizationId = marketingOrganizationId, ProviderOganizationId = providerAgencyOwner.OrganizationId })); } return(new AgreementResult() { Succeeded = result > 0, MarketingOrganizationId = agreement.MarketingOrganizationId, ProviderOrganizationId = agreement.ProviderOrganizationId }); } }
public async Task <AgreementResult> CreateAgreement(IMarketingAgencyOwner marketingAgencyOwner, Guid providerOrganizationId) { var retVal = new AgreementResult() { ProviderOrganizationId = providerOrganizationId, MarketingOrganizationId = marketingAgencyOwner.OrganizationId }; var marketingOrganization = await _marketingOrganizations.Queryable() .Where(x => x.Id == marketingAgencyOwner.OrganizationId) .FirstOrDefaultAsync(); if (marketingOrganization == null) { retVal.ErrorMessage = "Organization is not configured correctly"; return(retVal); } _logger.LogDebug(GetLogMessage("Marketing Organization Found: {0}"), marketingOrganization.Id); var providerOrganization = await _providerOrganization.Queryable() .Where(x => x.Id == providerOrganizationId) .FirstOrDefaultAsync(); if (providerOrganization == null) { throw new ApplicationException("Provider organization was not found"); } _logger.LogDebug(GetLogMessage("Provider Organization Found: {0}"), providerOrganization.Id); var agreement = new MarketingAgreement { MarketingStream = marketingOrganization.MarketerStream, MarketingBonus = marketingOrganization.MarketerBonus, MarketingAgencyBonus = marketingOrganization.MarketingAgencyBonus, MarketingAgencyStream = marketingOrganization.MarketingAgencyStream, MarketingOrganizationId = marketingAgencyOwner.OrganizationId, ProviderOrganizationId = providerOrganizationId, Status = AgreementStatus.AwaitingApproval, ObjectState = ObjectState.Added, InitiatedByProvider = false, Created = DateTimeOffset.UtcNow }; _logger.LogDebug(GetLogMessage("Marketing Agreement: {@agreement}"), agreement); var result = Repository.InsertOrUpdateGraph(agreement, true); _logger.LogDebug(GetLogMessage("{0} Records updated in database"), result); return(await Task.FromResult(new AgreementResult() { Succeeded = result > 0, MarketingOrganizationId = agreement.MarketingOrganizationId, ProviderOrganizationId = agreement.ProviderOrganizationId })); }
public async Task <AgreementResult> CreateAgreement(IRecruitingAgencyOwner principal, Guid providerOrganizationId, RecruitingAgreementInput input) { _logger.LogInformation(GetLogMessage("Agency Owner creating recruiting agreement {@agreement}"), input); var retVal = new AgreementResult() { ProviderOrganizationId = providerOrganizationId, RecruitingOrganizationId = principal.OrganizationId }; var recruiterOrganization = await _recruitingOrganizations.Queryable() .Where(x => x.Id == principal.OrganizationId) .FirstOrDefaultAsync(); if (recruiterOrganization == null) { retVal.ErrorMessage = "Organization is not configured correctly"; return(retVal); } _logger.LogDebug(GetLogMessage("Recruiter Organization Found: {0}"), recruiterOrganization.Id); var providerOrganization = await _providerOrganizations.Queryable() .Where(x => x.Id == providerOrganizationId) .FirstOrDefaultAsync(); if (providerOrganization == null) { throw new ApplicationException("Provider organization was not found"); } _logger.LogDebug(GetLogMessage("Provider Organization Found: {0}"), providerOrganization.Id); var agreement = new RecruitingAgreement() { RecruiterStream = recruiterOrganization.RecruiterStream, RecruiterBonus = recruiterOrganization.RecruiterBonus, RecruitingAgencyBonus = recruiterOrganization.RecruitingAgencyBonus, RecruitingAgencyStream = recruiterOrganization.RecruitingAgencyStream, RecruitingOrganizationId = principal.OrganizationId, ProviderOrganizationId = providerOrganizationId, Status = AgreementStatus.AwaitingApproval, ObjectState = ObjectState.Added, InitiatedByProvider = false }; _logger.LogDebug(GetLogMessage("Recruiting Agreement: {@agreement}"), agreement); var result = Repository.InsertOrUpdateGraph(agreement, true); _logger.LogDebug(GetLogMessage("{0} Records updated in database"), result); return(await Task.FromResult(new AgreementResult() { Succeeded = result > 0, ProviderOrganizationId = agreement.ProviderOrganizationId, RecruitingOrganizationId = agreement.RecruitingOrganizationId })); }