public IHttpActionResult Add(User postModel)
        {
            var logonName = this.GetCurrentUserContext();

            using (var dbContext = new BillingsDbContext())
            {
                var createdBy = dbContext.Users.FirstOrDefault(u => u.LogonName == logonName);
                var user = dbContext.Users.FirstOrDefault(u => u.LogonName == postModel.LogonName);
                if (user != null) return this.Ok(-1);
                //this line doesn't make sense.
                //postModel.CreatedById = user.Id;
                postModel.CreatedBy = createdBy;
                dbContext.Users.Add(postModel);
                dbContext.SaveChanges();

                return this.Ok(postModel.Id);
                //user already exists?
            }
        }
        public ActionResult Index(HttpPostedFileBase file)
        {
            try
            {
                var fileName = Path.GetFileName(file.FileName);
                var physicalFileLocation = Server.MapPath("~/App_Data");
                if (fileName != null)
                {
                    var path = Path.Combine(physicalFileLocation, fileName);
                    file.SaveAs(path);

                    var excel = new ExcelQueryFactory(path);

                    #region Mappings

                    excel.AddMapping<ImportBill>(p => p.PeriodEndDate, "Period End Date");
                    excel.AddMapping<ImportBill>(p => p.Type, "Type");
                    excel.AddMapping<ImportBill>(p => p.OwingOffice, "Owning Office");
                    excel.AddMapping<ImportBill>(p => p.Currency, "Currency");
                    excel.AddMapping<ImportBill>(p => p.ServiceLine, "Service Line");
                    excel.AddMapping<ImportBill>(p => p.BstRefNumber, "BST Ref #");
                    excel.AddMapping<ImportBill>(p => p.TransactionDate, "Transaction Date");
                    excel.AddMapping<ImportBill>(p => p.ProjectNumber, "Proj #");

                    excel.AddMapping<ImportBill>(p => p.ProjectName, "Proj Name");
                    excel.AddMapping<ImportBill>(p => p.InvoiceNumber, "Invoice #");
                    excel.AddMapping<ImportBill>(p => p.Fee, "Fee");
                    excel.AddMapping<ImportBill>(p => p.Consultants, "Consultants");
                    excel.AddMapping<ImportBill>(p => p.Reimbursable, "Reimbursables");
                    excel.AddMapping<ImportBill>(p => p.Tax, "Tax");
                    excel.AddMapping<ImportBill>(p => p.ForeignWhTax, "Foreign W/H Tax");

                    excel.AddMapping<ImportBill>(p => p.Total, "Total");
                    excel.AddMapping<ImportBill>(p => p.Sl1Code, "SL1 EVC");
                    excel.AddMapping<ImportBill>(p => p.Sl1Name, "SL1 Name");
                    excel.AddMapping<ImportBill>(p => p.Sl1Percentage, "SL1 %");
                    excel.AddMapping<ImportBill>(p => p.Sl2Code, "SL2 EVC");
                    excel.AddMapping<ImportBill>(p => p.Sl2Name, "SL2 Name");
                    excel.AddMapping<ImportBill>(p => p.Sl2Percentage, "SL2 %");
                    excel.AddMapping<ImportBill>(p => p.Hawaii, "Hawaii");
                    excel.AddMapping<ImportBill>(p => p.InputDate, "Inpute Date");
                    excel.AddMapping<ImportBill>(p => p.GbpRate, "GBP Rate");

                    excel.AddMapping<ImportBill>(p => p.UsdRate, "UDS Rate"); //Column misspelled
                    excel.AddMapping<ImportBill>(p => p.Company, "Company");
                    excel.AddMapping<ImportBill>(p => p.ServiceLineOrg, "Service Line Org");
                    excel.AddMapping<ImportBill>(p => p.Country, "Project Country");
                    excel.AddMapping<ImportBill>(p => p.Region, "Project Region");

                    #endregion

                    var excelFileRecords = from c in excel.Worksheet<ImportBill>("Upload")
                                           select c;

                    #region save data set to ms sql database

                    using (var dbContext = new BillingsDbContext())
                    {
                        var numberOfRecords = excelFileRecords.Count();
                        var counter = 0;
                        var logger = DependencyResolver.Current.GetService<ILogger>();
                        logger.Information("Number of records " + numberOfRecords);
                        foreach (var record in excelFileRecords)
                        {
                            try
                            {
                                var bill = new Bill();
                                var periodEndDate = DateTime.MinValue;
                                DateTime.TryParse(record.PeriodEndDate, out periodEndDate);
                                if (periodEndDate != DateTime.MinValue)
                                {
                                    bill.PeriodEndDate = periodEndDate;
                                }
                                var transactionDate = DateTime.MinValue;
                                DateTime.TryParse(record.TransactionDate, out transactionDate);
                                if (transactionDate != DateTime.MinValue)
                                {
                                    bill.TransactionDate = transactionDate;
                                }
                                var inputDate = DateTime.MinValue;
                                DateTime.TryParse(record.InputDate, out inputDate);
                                if (inputDate != DateTime.MinValue)
                                {
                                    bill.InputDate = inputDate;
                                }
                                var fee = 0m;
                                decimal.TryParse(record.Fee, out fee);
                                if (fee != 0m)
                                {
                                    bill.Fee = fee;
                                }
                                var consultants = 0m;
                                decimal.TryParse(record.Consultants, out consultants);
                                if (consultants != 0m)
                                {
                                    bill.Consultants = consultants;
                                }
                                var reimbursables = 0m;
                                decimal.TryParse(record.Reimbursable, out reimbursables);
                                if (reimbursables != 0m)
                                {
                                    bill.Reimbursable = reimbursables;
                                }
                                var tax = 0m;
                                decimal.TryParse(record.Tax, out tax);
                                if (tax != 0m)
                                {
                                    bill.Tax = tax;
                                }
                                var foreignWhTax = 0m;
                                decimal.TryParse(record.ForeignWhTax, out foreignWhTax);
                                if (foreignWhTax != 0m)
                                {
                                    bill.ForeignWhTax = foreignWhTax;
                                }
                                var total = 0m;
                                decimal.TryParse(record.Total, out total);
                                if (total != 0m)
                                {
                                    bill.Total = total;
                                }
                                var gbpRate = decimal.MinValue;
                                decimal.TryParse(record.GbpRate, out gbpRate);
                                if (gbpRate != decimal.MinValue)
                                {
                                    bill.GbpRate = gbpRate;
                                }
                                var usdRate = decimal.MinValue;
                                decimal.TryParse(record.UsdRate, out usdRate);
                                if (usdRate != decimal.MinValue)
                                {
                                    bill.UsdRate = usdRate;
                                }

                                bill.Type = record.Type;
                                bill.OwingOffice = record.OwingOffice;
                                bill.Currency = record.Currency;
                                bill.ServiceLine = record.ServiceLine;
                                bill.BstRefNumber = record.BstRefNumber;

                                bill.ProjectNumber = record.ProjectNumber;
                                bill.ProjectName = record.ProjectName;
                                bill.InvoiceNumber = record.InvoiceNumber;

                                bill.Sl1Code = record.Sl1Code;
                                bill.Sl1Name = record.Sl1Name;
                                bill.Sl1Percentage = record.Sl1Percentage;

                                bill.Sl2Code = record.Sl2Code;
                                bill.Sl2Name = record.Sl2Name;
                                bill.Sl2Percentage = record.Sl2Percentage;

                                bill.Hawaii = record.Hawaii;
                                bill.Company = record.Company;
                                bill.ServiceLineOrg = record.ServiceLineOrg;
                                bill.Country = record.Country;
                                bill.Region = record.Region;

                                dbContext.Bills.Add(bill);
                                dbContext.SaveChanges();
                                counter++;
                                logger.Information("Record " + counter + " saved: " + record.PeriodEndDate + "," + record.TransactionDate + ", " +
                                                   record.ProjectNumber);
                            }
                            catch (Exception ex)
                            {
                                logger.Error(ex.Message, ex);
                            }
                        }
                    }
                }

                    #endregion save data set to ms sql database

                TempData.Add(Alerts.SUCCESS, "Data imported successfully.");
                return View();
            }
            catch (Exception ex)
            {
                var logger = DependencyResolver.Current.GetService<ILogger>();
                logger.Error(ex.Message, ex);
                TempData.Add(Alerts.ERROR,
                    "Opps! Something went wrong when trying to upload file We've logged this, but it might work if you try it again.");
                return View();
            }
        }
 public IHttpActionResult Save(User postModel)
 {
     using (var dbContext = new BillingsDbContext())
     {
         if (postModel.Id > 0)
         {
             var user = dbContext.Users.FirstOrDefault(u => u.LogonName == postModel.LogonName);
             user.FullName = postModel.FullName;
             user.Role = postModel.Role;
             user.IsActive = postModel.IsActive;
         }
         else
         {
             dbContext.Users.Add(postModel);
         }
         dbContext.SaveChanges();
         return this.Ok(postModel.Id);
     }
 }