public ActionResult Create(CampaignVM campaign) { try { ViewBag.CampaignTypes = GetCampaignTypes(); if (ModelState.IsValid) { ViewBag.CampaignTypes = GetCampaignTypes(); campaign.CreatedBy = User.Identity.Name; var campaignModule = new CampaignModule(); var report = campaignModule.ValidateCampaign(campaign); TempData["CampaignReport"] = report; return View("Report", report.Validations); } ViewBag.Message = "Error in input. Please correct the errors"; return View(campaign); } catch (Exception ex) { ErrorSignal.FromCurrentContext().Raise(ex); ViewBag.Message = "Cannot create campaign"; return View(campaign); } }
public EP.BulkMessage.Service.Entity.Campaign GetCampaignFromVM(CampaignVM viewModel) { return new Service.Entity.Campaign { ContentTemplate = viewModel.Content, CreatedBy = viewModel.CreatedBy, CreatedDate = DateTime.Now, FileName = viewModel.FileName, Id = viewModel.Id, Name = viewModel.Name, StatusDate = viewModel.StatusDate, StatusId = viewModel.StatusId, SubjectTemplate = viewModel.Subject, RecipientField = viewModel.RecipientField, TypeId = viewModel.TypeId }; }
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; }