public ListViewModel GetListViewModel(int id)
 {
     ListViewModel lvm = new ListViewModel { ListId = id };
     
     using (SlpContext context = new SlpContext())
     {
         if (lvm.ListId == (int)ListEnum.AssistancePrograms)
         {
             lvm.TableValues.AddRange(context.AssistanceProgram.Select(a => new NameValueViewModel { Name = a.Name, Value = a.Id, SelectedItem = a.Visible }));
         }
         else if (lvm.ListId == (int)ListEnum.ChildCategories)
         {
             lvm.TableValues.AddRange(context.ChildAttributeTypes.Select(a => new NameValueViewModel { Name = a.Name, Value = a.Id, SelectedItem = a.Visible }));
         }
         else if (lvm.ListId == (int)ListEnum.EthnicityList)
         {
             lvm.TableValues.AddRange(context.Ethnicity.Select(a => new NameValueViewModel { Name = a.Name, Value = a.Id, SelectedItem = a.Visible }));
         }
         else if (lvm.ListId == (int)ListEnum.RaceList)
         {
             lvm.TableValues.AddRange(context.Race.Select(a => new NameValueViewModel { Name = a.Name, Value = a.Id, SelectedItem = a.Visible }));
         }
         else if (lvm.ListId == (int)ListEnum.IncomeFrequencies)
         {
             lvm.TableValues.AddRange(context.Frequency.Select(a => new NameValueViewModel { Name = a.Name, Value = a.Id, SelectedItem = a.Visible }));
         }
         else if (lvm.ListId == (int)ListEnum.IncomeQuestionsChild)
         {
             lvm.TableValues.AddRange(context.IncomeQuestions.Where(b=>b.IsChild == true).Select(a => new NameValueViewModel { Name = a.Text, Value = a.Id, SelectedItem = a.Visible, Type= a.Type }));
         }
         else if (lvm.ListId == (int)ListEnum.IncomeQuestionsAdult)
         {
             lvm.TableValues.AddRange(context.IncomeQuestions.Where(b => b.IsChild == false).Select(a => new NameValueViewModel { Name = a.Text, Value = a.Id, SelectedItem = a.Visible, Type = a.Type }));
         }
     }
     return lvm;
 }
        public void SaveListViewModel(ListViewModel lvm)
        {
            using (SlpContext context = new SlpContext())
            {
                if (lvm.ListId == (int)ListEnum.AssistancePrograms)
                {
                    foreach (NameValueViewModel item in lvm.TableValues)
                    {
                        if (item.Value == 0 && item.Name != null && item.Name.Trim()!= "")
                        {
                            context.AssistanceProgram.Add(new AssistanceProgram { Name = item.Name, Visible = item.SelectedItem });
                        }
                        else {
                            var dbitem = context.AssistanceProgram.Find(item.Value);
                            dbitem.Name = item.Name;
                            dbitem.Visible = item.SelectedItem;
                        }
                    }
                }
                else if (lvm.ListId == (int)ListEnum.ChildCategories)
                {
                    foreach (NameValueViewModel item in lvm.TableValues)
                    {
                        if (item.Value == 0 && item.Name != null && item.Name.Trim() != "")
                        {
                            context.ChildAttributeTypes.Add(new ChildAttributeType { Name = item.Name, Visible = item.SelectedItem });
                        }
                        else
                        {
                            var dbitem = context.ChildAttributeTypes.Find(item.Value);
                            dbitem.Name = item.Name;
                            dbitem.Visible = item.SelectedItem;
                        }
                    }
                }
                else if (lvm.ListId == (int)ListEnum.EthnicityList)
                {
                    foreach (NameValueViewModel item in lvm.TableValues)
                    {
                        if (item.Value == 0 && item.Name != null && item.Name.Trim() != "")
                        {
                            context.Ethnicity.Add(new Ethnicity { Name = item.Name, Visible = item.SelectedItem });
                        }
                        else
                        {
                            var dbitem = context.Ethnicity.Find(item.Value);
                            dbitem.Name = item.Name;
                            dbitem.Visible = item.SelectedItem;
                        }
                    }
                }
                else if (lvm.ListId == (int)ListEnum.RaceList)
                {
                    foreach (NameValueViewModel item in lvm.TableValues)
                    {
                        if (item.Value == 0 && item.Name != null && item.Name.Trim() != "")
                        {
                            context.Race.Add(new Race { Name = item.Name, Visible = item.SelectedItem });
                        }
                        else
                        {
                            var dbitem = context.Race.Find(item.Value);
                            dbitem.Name = item.Name;
                            dbitem.Visible = item.SelectedItem;
                        }
                    }
                }
                else if (lvm.ListId == (int)ListEnum.IncomeFrequencies)
                {
                    foreach (NameValueViewModel item in lvm.TableValues)
                    {
                        if (item.Value == 0 && item.Name != null && item.Name.Trim() != "")
                        {
                            context.Frequency.Add(new Frequency { Name = item.Name, Visible = item.SelectedItem });
                        }
                        else
                        {
                            var dbitem = context.Frequency.Find(item.Value);
                            dbitem.Name = item.Name;
                            dbitem.Visible = item.SelectedItem;
                        }
                    }
                }
                else if (lvm.ListId == (int)ListEnum.IncomeQuestionsChild || lvm.ListId == (int)ListEnum.IncomeQuestionsAdult)
                {
                    foreach (NameValueViewModel item in lvm.TableValues)
                    {
                        if (item.Value == 0 && item.Name != null && item.Name.Trim() != "")
                        {
                            context.IncomeQuestions.Add(new IncomeQuestion {
                                Text = item.Name,
                                Visible = item.SelectedItem,
                                IsChild = lvm.ListId == (int)ListEnum.IncomeQuestionsChild,
                                Type = item.Type });
                        }
                        else
                        {
                            var dbitem = context.IncomeQuestions.Find(item.Value);
                            dbitem.Text = item.Name;
                            dbitem.Visible = item.SelectedItem;
                            dbitem.Type = item.Type;
                        }
                    }
                }
               


                context.SaveChanges();
            }

        }
 public JsonResult SaveListViewModel(ListViewModel lvm)
 {
     adminOrchestrator.SaveListViewModel(lvm);
     return GetListViewModel(lvm.ListId);
 }