示例#1
0
        public CampaignReport ValidateCampaign(CampaignVM campaignVM)
        {
            CampaignValidation validations = new CampaignValidation();
            var fileName = campaignVM.FileName;
            var fields = GetAllMappingFields(campaignVM.Content);
            fields.AddRange(GetAllMappingFields(campaignVM.RecipientField));
            if (campaignVM.TypeId == (int)CampaignType.Email)
                fields.AddRange(GetAllMappingFields(campaignVM.Subject));

            var excelRows = GetExcelMappings(fileName);
            ValidateExcelForFields(ref validations, fields, excelRows);

            var validRows = new List<Row>();
            if (validations.IsValid)
            {
                int rowCount = 2;
                foreach (var row in excelRows)
                {
                    var recepient = row[GetAllMappingFields(campaignVM.RecipientField)[0]];
                    if (validations.Validate(recepient, (CampaignType)campaignVM.TypeId, rowCount))
                        validRows.Add(row);
                    rowCount += 1;
                }

            }
            validations.TotalRecordCount = excelRows.Count();
            var report = new CampaignReport
            {
                Campaign = campaignVM,
                ExcelRows = validRows,
                Validations = validations
            };
            return report;
        }
示例#2
0
        public int SaveCampaign(CampaignReport report)
        {
            try
            {
                var campaignVM = report.Campaign;

                CampaignService campaignService = new CampaignService();
                var campaign = new CampaignAdapter().GetCampaignFromVM(campaignVM);
                campaign.DepartmentId = UserModule.GetUsersDepartment();

                if (campaign.Id == 0)
                    campaign.Id = campaignService.SaveCampaign(campaign);
                else
                {
                    campaignService.ReCreateCampaign(campaign, GetCampaign(campaign.Id).TypeId);
                }

                if (campaignVM.TypeId == (int)CampaignType.Email)
                {
                    List<Email> emailList = new List<Email>();
                    foreach (var row in report.ExcelRows)
                    {
                        var recipient = ReplaceContentWithValue(row, campaignVM.RecipientField);
                        Email email = new Email
                        {
                            Body = ReplaceContentWithValue(row, campaignVM.Content),
                            CampaignId = campaign.Id,
                            Id = 0,
                            StatusId = (int)MessageStatus.New,
                            StatusDate = DateTime.Now,
                            Subject = ReplaceContentWithValue(row, campaignVM.Subject),
                            ToAddress = recipient
                        };
                        emailList.Add(email);
                    }
                    campaignService.SaveCampaignEmails(emailList);
                }

                else
                {
                    List<Sms> smsList = new List<Sms>();
                    foreach (var row in report.ExcelRows)
                    {
                        var recipient = ReplaceContentWithValue(row, campaignVM.RecipientField);
                        string number = recipient.Replace("+", "").Replace("-", "").Replace(" ", ""); ;
                        Sms sms = new Sms
                        {

                            Content = ReplaceContentWithValue(row, campaignVM.Content),
                            CampaignId = campaign.Id,
                            Id = 0,
                            StatusId = (int)MessageStatus.New,
                            StatusDate = DateTime.Now,
                            ToNumber = number
                        };
                        smsList.Add(sms);
                    }

                    campaignService.SaveCampaignSmses(smsList);
                }
                return campaign.Id;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }