public IEnumerable <object> GetAllUsers()
        {
            using (var context = new MainDBEntities())
            {
                if (this.GetType() == typeof(AdminAccess))
                {
                    List <User> users = context.Users.ToList();

                    //Map all schools to AdminSchoolViewModel objects
                    ApplicationSpecificMapper mapper = new ApplicationSpecificMapper();

                    //Convert objects from dom model to view model
                    IEnumerable <object> user_enum = mapper.MapAll(users,
                                                                   typeof(AdminUserViewModel)).Cast <object>().AsEnumerable();

                    //return enum of view models
                    return(user_enum);
                }
                else if (this.GetType() == typeof(AmbassadorAccess))
                {
                    List <User> users = context.Users.ToList();

                    //Map all schools to AdminSchoolViewModel objects
                    ApplicationSpecificMapper mapper = new ApplicationSpecificMapper();

                    //Convert objects from dom model to view model
                    IEnumerable <object> user_enum = mapper.MapAll(users,
                                                                   typeof(AmbassUserViewModel)).Cast <object>().AsEnumerable();

                    //return enum of view models
                    return(user_enum);
                }
                else
                {
                    //Gracefully deal with error ***
                    return(null);
                }
            }
        }
        public IEnumerable <object> GetAllActiveProjects()
        {
            using (var context = new MainDBEntities())
            {
                if (this.GetType() == typeof(AdminAccess))
                {
                    var temp = (from assignment in context.ProjectAssignments
                                join project in context.Projects on assignment.ProjectID equals project.ProjectID
                                into first from first_beg in first.DefaultIfEmpty()
                                join school in context.Schools on assignment.SchoolID equals school.SchoolID
                                into second from second_beg in second.DefaultIfEmpty()
                                join ambassador in context.Users on second_beg.Username equals ambassador.Username
                                into third from third_beg in third.DefaultIfEmpty()
                                select new {
                        ProjectAssignId = assignment.ProjectAssignID,
                        ProjectID = assignment.ProjectID,
                        SchoolID = assignment.SchoolID,
                        ProjectName = first_beg.ProjectName,
                        SchoolName = second_beg.SchoolName,
                        ProgressStatus = assignment.ProgressStatus,
                        Username = third_beg.Username,
                        Email = third_beg.Email
                    });

                    //Convert into necessary view model
                    ApplicationSpecificMapper mapper = new ApplicationSpecificMapper();

                    IEnumerable <object> assignment_list = (IEnumerable <object>)(mapper.MapAll(temp, typeof(AdminActiveProjectViewModel)));

                    //Return view models
                    return(assignment_list);
                }
                else if (this.GetType() == typeof(AmbassadorAccess))
                {
                    //Modify to make ambassador specific ***

                    var temp = (from assignment in context.ProjectAssignments
                                join project in context.Projects on assignment.ProjectID equals project.ProjectID
                                into first
                                from first_beg in first.DefaultIfEmpty()
                                join school in context.Schools on assignment.SchoolID equals school.SchoolID
                                into second
                                from second_beg in second.DefaultIfEmpty()
                                join ambassador in context.Users on second_beg.Username equals ambassador.Username
                                into third
                                from third_beg in third.DefaultIfEmpty()
                                select new
                    {
                        ProjectAssignId = assignment.ProjectAssignID,
                        ProjectID = assignment.ProjectID,
                        SchoolID = assignment.SchoolID,
                        ProjectName = first_beg.ProjectName,
                        SchoolName = second_beg.SchoolName,
                        ProgressStatus = assignment.ProgressStatus,
                        Username = third_beg.Username,
                        Email = third_beg.Email
                    });

                    //Convert into necessary view model
                    ApplicationSpecificMapper mapper = new ApplicationSpecificMapper();

                    IEnumerable <AmbassActiveProjectViewModel> vm_assignment_list = (IEnumerable <AmbassActiveProjectViewModel>)(mapper.MapAll(temp, typeof(AmbassActiveProjectViewModel))).Cast <AmbassActiveProjectViewModel>();

                    //Eliminate archived ideas for ambassador access
                    vm_assignment_list = vm_assignment_list.Where(x => x.ProgressStatus != ProjectStatus.ARCHIVED);

                    //Box items for passage into controller
                    IEnumerable <object> ob_assignment_list = (IEnumerable <object>)vm_assignment_list.Cast <object>();

                    //Return view models
                    return(ob_assignment_list);
                }
                else
                {
                    //Error -- Access type of object not recognized
                    return(null);
                }
            }
        }
        //Func Desc: Used to get the current list of projects.
        //    Input: None.
        //   Output: An IEnumerable< T = appropriate view model >, or null
        public IEnumerable <object> GetProjectList()
        {
            using (var context = new MainDBEntities())
            {
                //Create mapper
                ApplicationSpecificMapper mapper = new ApplicationSpecificMapper();
                IEnumerable <object>      project_list;
                IEnumerable <object>      view_model_list;

                //Check the type of the calling object and vary reaction
                if (this.GetType() == typeof(AdminAccess))
                {
                    //If admin, use admin project view model

                    //Get project list
                    project_list = (IEnumerable <object>)context.Projects.ToList().Cast <object>();

                    try
                    {
                        //Map list to corresponding view model
                        view_model_list = mapper.MapAll(project_list, typeof(AdminProjectViewModel)).Cast <AdminProjectViewModel>();
                    }
                    catch
                    {
                        view_model_list = null;
                    }

                    if (view_model_list == null)
                    {
                        return(null);
                    }

                    //Return list of view models
                    return((IEnumerable <object>)view_model_list.Cast <AdminProjectViewModel>().GetEnumerator());
                }
                else if (this.GetType() == typeof(AmbassadorAccess))
                {
                    //If ambassador, use ambass project view model

                    //Get project list
                    project_list = (IEnumerable <object>)context.Projects.ToList().Cast <object>();
                    IEnumerable <AmbassProjectViewModel> temp;

                    try
                    {
                        //Map list to corresponding view model
                        temp = (IEnumerable <AmbassProjectViewModel>)mapper.MapAll(project_list,
                                                                                   typeof(AmbassProjectViewModel)).Cast <AmbassProjectViewModel>();
                    }
                    catch
                    {
                        temp = null;
                    }

                    if (temp == null)
                    {
                        return(null);
                    }

                    //Eliminate archived ideas for ambassador
                    view_model_list = temp.Where(x => x.IsArchived == false).Cast <object>();

                    //Return list of view models
                    return((IEnumerable <object>)view_model_list.Cast <AmbassProjectViewModel>().GetEnumerator());
                }
                else if (this.GetType() == typeof(ContributorAccess))
                {
                    //If contributor, use contributor project view model

                    //Get project list
                    project_list = (IEnumerable <object>)context.Projects.ToList().Cast <object>();
                    IEnumerable <ContributorProjectViewModel> temp;

                    try
                    {
                        //Map list to corresponding view model
                        temp = (IEnumerable <ContributorProjectViewModel>)mapper.MapAll(project_list,
                                                                                        typeof(ContributorProjectViewModel)).Cast <ContributorProjectViewModel>();
                    }
                    catch
                    {
                        temp = null;
                    }

                    if (temp == null)
                    {
                        return(null);
                    }

                    //Eliminate archived ideas for contributor
                    view_model_list = temp.Where(x => x.IsArchived == false).Cast <object>();

                    //Return list of view models
                    return((IEnumerable <object>)view_model_list.Cast <ContributorProjectViewModel>().GetEnumerator());
                }
                else if (this.GetType() == typeof(DefaultAccess))
                {
                    //If default, use default project view model

                    //Get project list
                    project_list = (IEnumerable <object>)context.Projects.ToList().Cast <object>();

                    //Map list to corresponding view model
                    IEnumerable <ProjectViewModel> temp;

                    try
                    {
                        temp = (IEnumerable <ProjectViewModel>)mapper.MapAll(project_list, typeof(ProjectViewModel)).Cast <ProjectViewModel>();
                    }
                    catch
                    {
                        temp = null;
                    }

                    if (temp == null)
                    {
                        return(null);
                    }

                    //Eliminate archived ideas for default
                    view_model_list = temp.Where(x => x.IsArchived == false).Cast <object>();

                    //Return list of view models
                    return((IEnumerable <object>)view_model_list.Cast <ProjectViewModel>().GetEnumerator());
                }
                else
                {
                    //Invalid access type
                    Debug.WriteLine("\n\n***** " +
                                    "Access object type wasn't recognized during GetProject(). " +
                                    "ERROR IN: CommerceIdeaBank.DatabaseInterface.BusinessLogic.ContributorAccess GetProject()" +
                                    "*****\n\n");

                    //Gracefully indicate error
                    return(null);
                }
            }
        }