Esempio n. 1
0
        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
            });
        }
    }
Esempio n. 2
0
        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
            }));
        }