public object GetSchool(int?id) { //Input checks if (id == null) { return(null); } if (id < 0) { return(null); } using (var context = new MainDBEntities()) { //Read in school with id = id object school = context.Schools.Find(id); if (school == null) { return(null); } //Instantiate mapper object ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); //Create application specific mapper and map to view model if (this.GetType() == typeof(AdminAccess)) { AdminSchoolViewModel vm_school = (AdminSchoolViewModel)mapper.Map((School)school, typeof(AdminSchoolViewModel)); return((object)vm_school); } else if (this.GetType() == typeof(AmbassadorAccess)) { AmbassSchoolViewModel vm_school = (AmbassSchoolViewModel)mapper.Map((School)school, typeof(AmbassSchoolViewModel)); return((object)vm_school); } else { //Error : Access object not recognized return(null); } } }
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); } } }
//Func Desc: Used to submit school to database // Input: A SchoolViewModel object instance // Output: A bool indicating whether submission succeeded. T = success, F = failure public bool SubmitSchool(AdminSchoolViewModel new_school) { //Input checks if (new_school == null) { return(false); } try { using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); //Create new project instance School school = new School(); //Map the view model to the domain model school = (School)mapper.Map(new_school, typeof(School)); //Submit the project to the db context.Schools.Add(school); //Save changes context.SaveChanges(); //Indicate successful submission return(true); } } catch { //Return false indicating failure to submit project return(false); } }
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 submit school to database // Input: A SchoolViewModel object instance // Output: A bool indicating whether submission succeeded. T = success, F = failure public bool SubmitSchool(AdminSchoolViewModel new_school) { //Input checks if (new_school == null) { return false; } try { using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); //Create new project instance School school = new School(); //Map the view model to the domain model school = (School)mapper.Map(new_school, typeof(School)); //Submit the project to the db context.Schools.Add(school); //Save changes context.SaveChanges(); //Indicate successful submission return true; } } catch { //Return false indicating failure to submit project return false; } }
public bool EditSchool(AdminSchoolViewModel vm_school) { if (vm_school == null) { return false; } try { using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); //Validate input if (mapper == null) { return false; } School school = (School)mapper.Map((AdminSchoolViewModel)vm_school, typeof(School)); //Validate input if (school == null) { return false; } //Create the project edit and populate necessary attributes SchoolEdit edit = new SchoolEdit(); edit.SchoolID = school.SchoolID; edit.Username = school.Username; edit.SchoolName = school.SchoolName; edit.Phone = (int)school.Phone; edit.Email = school.Email; edit.ContactEmail = school.ContactEmail; edit.ContactName = school.ContactName; edit.ContactPhone = school.ContactPhone; edit.Department = school.Department; edit.Class = school.Class; edit.StreetNumber = school.StreetNumber; edit.StreetName = school.StreetName; edit.ZipCode = school.ZipCode; edit.City = school.City; edit.State = school.State; edit.EditDate = DateTime.Now; context.SchoolEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(school).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return true; } } catch { //There was an error during school edit return false; } }
//Func Desc: Used to return a project from its id. // Input: Int representing id of project to locate. // Output: An instance of the project that has the specified id, or null public bool EditProject(object vm_project) { //Input checks if (vm_project == null) { return false; } if ( (vm_project.GetType() != typeof(AdminProjectViewModel)) && (vm_project.GetType() != typeof(AmbassProjectViewModel)) && (vm_project.GetType() != typeof(ContributorProjectViewModel))) { //Invalid view model Debug.WriteLine("\n\n***** " + "View model input into EditProject of ContributorAccess is invalid in type. " + "ERROR IN: CommerceIdeaBank.DatabaseInterface.BusinessLogic.ContributorAccess EditProject()" + "*****\n\n" ); //Indicate failure in status return false; } using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); if (this.GetType() == typeof(AdminAccess)) { Project proj = (Project)mapper.Map((AdminProjectViewModel)vm_project, typeof(Project)); //Create the project edit and populate necessary attributes ProjectEdit edit = new ProjectEdit(); edit.Username = proj.Username; edit.ProjectID = proj.ProjectID; edit.EditDate = DateTime.Now; context.ProjectEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(proj).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return true; } else if (this.GetType() == typeof(AmbassadorAccess)) { Project proj = (Project)mapper.Map((AmbassProjectViewModel)vm_project, typeof(Project)); //Create the project edit and populate necessary attributes ProjectEdit edit = new ProjectEdit(); edit.Username = proj.Username; edit.ProjectID = proj.ProjectID; edit.EditDate = DateTime.Now; context.ProjectEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(proj).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return true; } else if (this.GetType() == typeof(ContributorAccess)) { Project proj = (Project)mapper.Map((ContributorProjectViewModel)vm_project, typeof(Project)); //Create the project edit and populate necessary attributes ProjectEdit edit = new ProjectEdit(); edit.Username = proj.Username; edit.ProjectID = proj.ProjectID; edit.EditDate = DateTime.Now; context.ProjectEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(proj).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return true; } else { //Access type not recognized Debug.WriteLine("\n\n***** " + "Access object type wasn't recognized during EditProject(). " + "ERROR IN: CommerceIdeaBank.DatabaseInterface.BusinessLogic.ContributorAccess EditProject()" + "*****\n\n"); //Indicate error status return false; } } }
public bool EditSchool(AdminSchoolViewModel vm_school) { if (vm_school == null) { return(false); } try { using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); //Validate input if (mapper == null) { return(false); } School school = (School)mapper.Map((AdminSchoolViewModel)vm_school, typeof(School)); //Validate input if (school == null) { return(false); } //Create the project edit and populate necessary attributes SchoolEdit edit = new SchoolEdit(); edit.SchoolID = school.SchoolID; edit.Username = school.Username; edit.SchoolName = school.SchoolName; edit.Phone = (int)school.Phone; edit.Email = school.Email; edit.ContactEmail = school.ContactEmail; edit.ContactName = school.ContactName; edit.ContactPhone = school.ContactPhone; edit.Department = school.Department; edit.Class = school.Class; edit.StreetNumber = school.StreetNumber; edit.StreetName = school.StreetName; edit.ZipCode = school.ZipCode; edit.City = school.City; edit.State = school.State; edit.EditDate = DateTime.Now; context.SchoolEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(school).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return(true); } } catch { //There was an error during school edit return(false); } }
//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); } } }
//Func Desc: Used to return a project from its id. // Input: Int representing id of project to locate. // Output: An instance of the project that has the specified id, or null public object GetProject(int?project_id) //Should this be nullable? *** { //Input checks if (project_id == null) { return(null); } if (project_id < 0) { return(null); } using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); if (this.GetType() == typeof(AdminAccess)) { //Map located project to project view model AdminProjectViewModel vm_project = (AdminProjectViewModel)mapper.Map(context.Projects.Find(project_id), typeof(AdminProjectViewModel)); //Return project with given id or null return(vm_project); } else if (this.GetType() == typeof(AmbassadorAccess)) { //Map located project to project view model AmbassProjectViewModel vm_project = (AmbassProjectViewModel)mapper.Map(context.Projects.Find(project_id), typeof(AmbassProjectViewModel)); //Make sure project isn't archived if (vm_project.IsArchived == true) { return(null); } //Return project with given id or null return(vm_project); } else if (this.GetType() == typeof(ContributorAccess)) { //Map located project to project view model ContributorProjectViewModel vm_project = (ContributorProjectViewModel)mapper.Map(context.Projects.Find(project_id), typeof(ContributorProjectViewModel)); //Make sure project isn't archived if (vm_project.IsArchived == true) { return(null); } //Return project with given id or null return(vm_project); } else if (this.GetType() == typeof(DefaultAccess)) { //Map located project to project view model ProjectViewModel vm_project = (ProjectViewModel)mapper.Map(context.Projects.Find(project_id), typeof(ProjectViewModel)); //Make sure project isn't archived if (vm_project.IsArchived == true) { return(null); } //Return project with given id or null return(vm_project); } else { //Invalid access object Debug.WriteLine("\n\n***** " + "Access object type wasn't recognized during GetProject(). " + "ERROR IN: CommerceIdeaBank.DatabaseInterface.BusinessLogic.ContributorAccess GetProject()" + "*****\n\n"); return(null); } } }
//Func Desc: Used to return a project from its id. // Input: Int representing id of project to locate. // Output: An instance of the project that has the specified id, or null public bool EditProject(object vm_project) { //Input checks if (vm_project == null) { return(false); } if ((vm_project.GetType() != typeof(AdminProjectViewModel)) && (vm_project.GetType() != typeof(AmbassProjectViewModel)) && (vm_project.GetType() != typeof(ContributorProjectViewModel))) { //Invalid view model Debug.WriteLine("\n\n***** " + "View model input into EditProject of ContributorAccess is invalid in type. " + "ERROR IN: CommerceIdeaBank.DatabaseInterface.BusinessLogic.ContributorAccess EditProject()" + "*****\n\n"); //Indicate failure in status return(false); } using (var context = new MainDBEntities()) { ApplicationSpecificMapper mapper = new ApplicationSpecificMapper(); if (this.GetType() == typeof(AdminAccess)) { Project proj = (Project)mapper.Map((AdminProjectViewModel)vm_project, typeof(Project)); //Create the project edit and populate necessary attributes ProjectEdit edit = new ProjectEdit(); edit.Username = proj.Username; edit.ProjectID = proj.ProjectID; edit.EditDate = DateTime.Now; context.ProjectEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(proj).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return(true); } else if (this.GetType() == typeof(AmbassadorAccess)) { Project proj = (Project)mapper.Map((AmbassProjectViewModel)vm_project, typeof(Project)); //Create the project edit and populate necessary attributes ProjectEdit edit = new ProjectEdit(); edit.Username = proj.Username; edit.ProjectID = proj.ProjectID; edit.EditDate = DateTime.Now; context.ProjectEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(proj).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return(true); } else if (this.GetType() == typeof(ContributorAccess)) { Project proj = (Project)mapper.Map((ContributorProjectViewModel)vm_project, typeof(Project)); //Create the project edit and populate necessary attributes ProjectEdit edit = new ProjectEdit(); edit.Username = proj.Username; edit.ProjectID = proj.ProjectID; edit.EditDate = DateTime.Now; context.ProjectEdits.Add(edit); //Indicate modification and make changes persistent context.Entry(proj).State = EntityState.Modified; context.SaveChanges(); //Return true indicating successful project edit return(true); } else { //Access type not recognized Debug.WriteLine("\n\n***** " + "Access object type wasn't recognized during EditProject(). " + "ERROR IN: CommerceIdeaBank.DatabaseInterface.BusinessLogic.ContributorAccess EditProject()" + "*****\n\n"); //Indicate error status return(false); } } }