public ActionResult editFootnoteMaps(IList<Indicator_Footnote_MapsViewModel> newMapsViewModel)
        {
            var newMaps = new Indicator_Footnote_Maps();
            newMaps.Indicator_ID = newMapsViewModel.FirstOrDefault().Indicator_ID;
            newMaps.Footnote_ID = newMapsViewModel.FirstOrDefault().Footnote_Symbol_1 == null ? null : db.Footnotes.ToList().FirstOrDefault(x => x.Footnote_Symbol == newMapsViewModel.FirstOrDefault().Footnote_Symbol_1).Footnote_ID;
            newMaps.Map_ID = newMapsViewModel.FirstOrDefault().Map_ID_1;

            var mapID = newMaps.Map_ID;
            var footnoteID = newMaps.Footnote_ID;
            if (footnoteID == null)
            {
                var deleteMap = db.Indicator_Footnote_Maps.Find(newMaps.Map_ID);
                if (deleteMap != null)
                {
                    db.Indicator_Footnote_Maps.Remove(deleteMap);
                    db.SaveChanges();
                }
                return View();
            }
            else if (db.Indicator_Footnote_Maps.Any(x => x.Map_ID == mapID))
            {
                if (ModelState.IsValid && db.Footnotes.Any(x => x.Footnote_ID == footnoteID))
                {
                    db.Entry(newMaps).State = EntityState.Modified;
                    db.SaveChanges();
                    return View();
                }
                else
                {
                    var oldMap = db.Indicator_Footnote_Maps.Find(newMaps.Map_ID);
                    var viewModel = new
                    {
                        Map_ID = oldMap.Map_ID,
                        Footnote_ID = oldMap.Footnote_ID,
                        Indicator_ID = oldMap.Indicator_ID,
                        State = "InvalidChange"
                    };
                    return Json(viewModel, JsonRequestBehavior.AllowGet);
                }
            }
            else
            {
                if (ModelState.IsValid && db.Footnotes.Any(x => x.Footnote_ID == footnoteID))
                {
                    db.Indicator_Footnote_Maps.Add(newMaps);
                    db.SaveChanges();
                    var viewModel = new
                    {
                        Map_ID = newMaps.Map_ID,
                        Footnote_ID  = newMaps.Footnote_ID ,
                        Indicator_ID = newMaps.Indicator_ID,
                        State = "NewID"
                    };
                    return Json(viewModel, JsonRequestBehavior.AllowGet);
                }
                else if (ModelState.IsValid && !db.Footnotes.Any(x => x.Footnote_ID == footnoteID))
                {
                    var viewModel = new
                    {
                        State = "InvalidAdd"
                    };
                    return Json(viewModel, JsonRequestBehavior.AllowGet);
                }
            }
            return View();
        }
        public JsonResult setValueOld(Int16 indicatorID, string updateProperty, string updateValue, string updateValueSup, Int16 fiscalYear, bool? convertToFull)
        {
            var indicator = db.Indicators.FirstOrDefault(x => x.Indicator_ID == indicatorID);

            if (updateProperty == "Format_ID"){
                string formatStr = "";
                try
                {
                    indicator.Format_ID = Int16.Parse(updateValue);
                    db.Entry(indicator).State = EntityState.Modified;
                    db.SaveChanges();

                }
                catch
                {
                }
                finally
                {
                    var format = db.Formats.FirstOrDefault(x => x.Format_ID == indicator.Format_ID);
                    if (format != null)
                    {
                        formatStr = format.Format_Code;
                    }
                }
                return Json(formatStr, JsonRequestBehavior.AllowGet);
            }

            if (convertToFull.HasValue && convertToFull.Value)
            {
                updateProperty = FiscalYear.FYStrFull(updateProperty, fiscalYear);
            }

            var type = indicator.GetType();
            var property = type.GetProperty(updateProperty);
            property.SetValue(indicator, Convert.ChangeType(updateValue, property.PropertyType), null);

            updateLinks(indicator.Indicator_ID, updateValue, updateProperty, fiscalYear);

            if (updateProperty != "Indicator")
            {
                if (updateValueSup != "%NULL%")
                {
                    var propertySup = indicator.GetType().GetProperty(updateProperty + "_Sup");
                    if (propertySup != null)
                    {
                        propertySup.SetValue(indicator, Convert.ChangeType(updateValueSup, property.PropertyType), null);
                    }
                }
            }
            else
            {
                if (updateValueSup != null)
                {
                    var footnotes = updateValueSup.Split(',');
                    foreach (var map in db.Indicator_Footnote_Maps.Where(x => x.Indicator_ID == indicatorID).ToList())
                    {
                        db.Indicator_Footnote_Maps.Remove(map);
                    }
                    db.SaveChanges();
                    foreach (var footnote in footnotes)
                    {
                        if (footnote != "%NULL%")
                        {
                            Footnotes footnoteObj = db.Footnotes.FirstOrDefault(x => x.Footnote_Symbol == footnote.Trim());
                            if (footnoteObj != null)
                            {
                                Int16 footnoteID = footnoteObj.Footnote_ID;
                                var newMap = new Indicator_Footnote_Maps
                                {
                                    Footnote_ID = footnoteID,
                                    Indicator_ID = indicatorID,
                                    Fiscal_Year = fiscalYear,
                                };
                                db.Indicator_Footnote_Maps.Add(newMap);
                                db.SaveChanges();
                            }
                        }
                    }
                }

            }

            if (ModelState.IsValid)
            {
                db.Entry(indicator).State = EntityState.Modified;
                db.SaveChanges();
            }

            var propertyColor = type.GetProperty(updateProperty + "_Color");
            if (propertyColor != null)
            {
                var color = propertyColor.GetValue(indicator, null);
                return Json(color, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("", JsonRequestBehavior.AllowGet);
            }
        }
        public JsonResult setValue(Int16 indicatorID, string updateProperty, string updateValue, string updateValueSup, Int16 fiscalYear)
        {
            var indicator = db.Indicators.FirstOrDefault(x => x.Indicator_ID == indicatorID);

            var type = indicator.GetType();
            var property = type.GetProperty(updateProperty);
            property.SetValue(indicator, Convert.ChangeType(updateValue, property.PropertyType), null);

            if (updateProperty != "Indicator")
            {
                if (updateValueSup != "%NULL%")
                {
                    var propertySup = indicator.GetType().GetProperty(updateProperty + "_Sup");
                    if (propertySup != null)
                    {
                        propertySup.SetValue(indicator, Convert.ChangeType(updateValueSup, property.PropertyType), null);
                    }
                }
            }
            else
            {
                var footnotes = updateValueSup.Split(',');
                foreach (var map in db.Indicator_Footnote_Maps.Where(x => x.Indicator_ID == indicatorID).ToList())
                {
                    db.Indicator_Footnote_Maps.Remove(map);
                }
                db.SaveChanges();
                foreach (var footnote in footnotes)
                {
                    if (footnote != "%NULL%")
                    {
                        Footnotes footnoteObj = db.Footnotes.FirstOrDefault(x => x.Footnote_Symbol == footnote.Trim());
                        if (footnoteObj != null)
                        {
                            Int16 footnoteID = footnoteObj.Footnote_ID;
                            var newMap = new Indicator_Footnote_Maps
                            {
                                Footnote_ID = footnoteID,
                                Indicator_ID = indicatorID,
                                Fiscal_Year = fiscalYear,
                            };
                            db.Indicator_Footnote_Maps.Add(newMap);
                            db.SaveChanges();
                        }
                    }
                }

            }

            if (ModelState.IsValid)
            {
                db.Entry(indicator).State = EntityState.Modified;
                db.SaveChanges();
            }

            var propertyColor = type.GetProperty(updateProperty + "_Color");
            if (propertyColor != null)
            {
                var color = propertyColor.GetValue(indicator,null);
                return Json(color, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("", JsonRequestBehavior.AllowGet);
            }
            //var indicatorID = indicatorChange[0].Indicator_ID;
            //if (db.Indicators.Any(x => x.Indicator_ID == indicatorID ))
            //{
            //    if (ModelState.IsValid)
            //    {
            //        db.Entry(indicatorChange[0]).State = EntityState.Modified;
            //        db.SaveChanges();
            //    }
            //}
            //else
            //{
            //    if (ModelState.IsValid)
            //    {
            //        db.Indicators.Add(indicatorChange[0]);
            //        db.SaveChanges();
            //    }
            //}
        }
        public JsonResult setValueFootnotes(Int16 indicatorID, string updateProperty, string updateValue, string updateValueSup, Int16 fiscalYear)
        {
            var indicator = db.Indicators.FirstOrDefault(x => x.Indicator_ID == indicatorID);

            var footnotes = updateValueSup.Split(',');
            foreach (var map in db.Indicator_Footnote_Maps.Where(x => x.Indicator_ID == indicatorID).ToList())
            {
                db.Indicator_Footnote_Maps.Remove(map);
            }
            db.SaveChanges();
            foreach (var footnote in footnotes)
            {
                if (footnote != "%NULL%")
                {
                    Footnotes footnoteObj = db.Footnotes.FirstOrDefault(x => x.Footnote_Symbol == footnote.Trim());
                    if (footnoteObj != null)
                    {
                        Int16 footnoteID = footnoteObj.Footnote_ID;
                        var newMap = new Indicator_Footnote_Maps
                        {
                            Footnote_ID = footnoteID,
                            Indicator_ID = indicatorID,
                            Fiscal_Year = fiscalYear,
                        };
                        db.Indicator_Footnote_Maps.Add(newMap);
                        db.SaveChanges();
                    }
                }
            }

            if (ModelState.IsValid)
            {
                db.Entry(indicator).State = EntityState.Modified;
                db.SaveChanges();
            }

            return Json("", JsonRequestBehavior.AllowGet);
        }