private static void ReadData(string file, bool imported, List<Firm> firms, List<KeyValuePair<string, string>> errors)
{
var sheet = ExcelHelpers.OpenWorkbook(HostingEnvironment.MapPath(file));
for (var i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++)
{
var row = sheet.GetRow(i);
try
{
var f_id = ExcelHelpers.ReadIntCell(row, 13);
// check the existance
if (Db.Firms.Any(a => a.f_id == f_id)) throw new Exception("Already exists");
// check and see if we came across it already in this file
var item = firms.Where(a => a.f_id == f_id).FirstOrDefault();
if (item != null)
{
errors.Add(new KeyValuePair<string, string>(f_id.ToString(), "duplicate value, replacing old"));
// get the index to remove the first one
firms.Remove(item);
}
var firm = new Firm();
firm.City = ExcelHelpers.ReadCell(row, 0); // a
firm.Country = ExcelHelpers.ReadCell(row, 1); // b
firm.State = ExcelHelpers.ReadCell(row, 2); // c
firm.Address = ExcelHelpers.ReadCell(row, 3); // d
firm.Zip = ExcelHelpers.ReadCell(row, 4); // e
firm.IsPOBox = ExcelHelpers.ReadBoolCell(row, 5); // f
firm.Fax = ExcelHelpers.ReadCell(row, 6); // g
firm.Phone = ExcelHelpers.ReadCell(row, 7); // h
firm.Ext = ExcelHelpers.ReadCell(row, 8); // i
firm.Created = ExcelHelpers.ReadDateCell(row, 9); // j
firm.Modified = ExcelHelpers.ReadDateCell(row, 10); // k
firm.Description = ExcelHelpers.ReadCell(row, 11); // l
firm.Financial = ExcelHelpers.ReadBoolCell(row, 12); // m
firm.f_id = ExcelHelpers.ReadIntCell(row, 13); // n
firm.Name = ExcelHelpers.ReadCell(row, 14); // o
firm.CreatedBy = ExcelHelpers.ReadCell(row, 15); // p
firm.ModifiedBy = ExcelHelpers.ReadCell(row, 16); // q
firm.WebAddress = ExcelHelpers.ReadCell(row, 17); // r
// check the name against one that has already been created
var db = Db.Firms.Where(a => a.Name.Trim().ToLower() == firm.Name.Trim().ToLower()).FirstOrDefault();
var list = firms.Where(a => a.Name.Trim().ToLower() == firm.Name.Trim().ToLower()).FirstOrDefault();
if (db != null)
{
firm.GroupId = db.GroupId;
}
else if (list != null)
{
firm.GroupId = list.GroupId;
}
else
{
firm.GroupId = Guid.NewGuid();
}
firms.Add(firm);
}
catch (Exception ex)
{
errors.Add(new KeyValuePair<string, string>(ExcelHelpers.ReadIntCell(row, 13).ToString(), ex.Message));
}
}
if (!imported)
{
foreach (var a in firms)
{
Db.Firms.Add(a);
}
Db.SaveChanges();
}
}