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