예제 #1
0
        public async Task <int> CreateCampaign(int agencyid, CreateCampaignViewModel model, string username)
        {
            var campaignTypeCharge = await _campaignTypeChargeRepository.GetSingleBySpecAsync(new CampaignTypeChargeSpecification(model.Type));

            if (campaignTypeCharge == null)
            {
                return(-1);
            }
            var settings = await _settingRepository.GetSetting();

            // var wallet = await _walletRepository.GetBalance(EntityType.Agency, agencyid);
            var code = await _campaignRepository.GetValidCode(agencyid);

            var campaign = model.GetEntity(agencyid, campaignTypeCharge, settings, code, username);

            if (campaign == null)
            {
                return(-1);
            }

            await _campaignRepository.AddAsync(campaign);

            if (campaign.Id > 0)
            {
                await CreateCampaignAccountType(campaign.Id, model.AccountType, username);
                await CreateCampaignOptions(campaign.Id, model, username);

                return(campaign.Id);
            }

            return(-1);
        }
        public async Task <Result <long> > Handle(
            CreateMonthlyCampaignCommand request,
            CancellationToken cancellationToken)
        {
            var campaign = new Campaign(request.Name);
            await _campaignRepository.AddAsync(campaign, cancellationToken);

            await _unitOfWork.Commit(cancellationToken);

            return(campaign.Id);
        }