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; }
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; } }