public DataTable RemoveDuplicatesInSimple(DataTable pholioData)
        {
            var simpleUpload = new SimpleUpload();
            var dataToBeUploaded = new List<UploadDataModel>();

            for (var i = 0; i < pholioData.Rows.Count; i++)
            {
                var row = pholioData.Rows[i];
                var rowParser = new UploadSimpleRowParser(row);

                if (rowParser.DoesRowContainData == false)
                {
                    //There isn't an area code or value so assume the end of the data 
                    break;
                }

                var uploadDataModel = rowParser.GetUploadDataModelWithUnparsedValuesSetToDefaults(simpleUpload);
                dataToBeUploaded.Add(uploadDataModel);
            }

            // Remove the duplicate
            var noDupData =
                        dataToBeUploaded.GroupBy(
                            x =>
                                new
                                {
                                    x.AreaCode
                                })
                            .Select(y => y.First())
                            .ToList();

            // Create new table without duplicats            
            var table = new DataTable();
            table.Columns.Add("AreaCode", typeof(string));
            table.Columns.Add("Count", typeof(double));
            table.Columns.Add("Value", typeof(double));
            table.Columns.Add("LowerCI", typeof(double));
            table.Columns.Add("UpperCI", typeof(double));
            table.Columns.Add("Denominator", typeof(double));
            table.Columns.Add("ValueNoteId", typeof(double));

            foreach (var data in noDupData)
            {
                table.Rows.Add(data.AreaCode, data.Count, data.Value, data.LowerCi, data.UpperCi, data.Denominator,
                    data.ValueNoteId);
            }
            return table;
        }
        public SimpleUpload UploadData(DataTable indicatorDetails, DataTable pholioData, UploadJob job)
        {
            var simpleUpload = new SimpleUpload();
            var rowCount = 0;

            var allowedData = new AllowedData(_profilesReader);

            // TODO: find out why were are calling it again here as its caled in Validate()
            ValidateIndicatorDetails(indicatorDetails, simpleUpload, allowedData);

            var dataToUpload = new List<UploadDataModel>();

            for (int i = 0; i < pholioData.Rows.Count; i++)
            {
                DataRow row = pholioData.Rows[i];
                var rowParser = new UploadSimpleRowParser(row);

                if (rowParser.DoesRowContainData == false)
                {
                    //There isn't an area code or value so assume the end of the data  
                    break;
                }

                rowCount++;

                var upload = rowParser.GetUploadDataModelWithUnparsedValuesSetToDefaults(simpleUpload);
                _coreDataRepository.InsertCoreData(upload.ToCoreDataSet(), job.Guid);
                dataToUpload.Add(upload);
            }

            simpleUpload.DataToUpload = dataToUpload;

            int uploadId = _loggingRepository.InsertUploadAudit(job.Guid, job.Username,
                rowCount, job.Filename, WorksheetNames.SimplePholio);

            simpleUpload.ShortFileName = Path.GetFileName(job.Filename);
            simpleUpload.TotalDataRows = rowCount;
            simpleUpload.UploadBatchId = job.Guid;
            simpleUpload.Id = uploadId;

            return simpleUpload;
        }