public InitiatedProjectViewModel GetProjectByGroup(int groupId) { //We allow only one submission with history InitiatedProjectViewModel model = new InitiatedProjectViewModel(); using (var connection = GetConnection()) { var project = connection.Query("Select TOP 1 * from Student_Project Inner Join Project on Student_Project.project_id = Project.project_id where group_id = 8 ORDER BY submitted_on DESC", new { groupId = groupId }).SingleOrDefault(); if (project != null) { model.Id = project.project_id; model.Title = project.project_title; model.ProjectOverview = project.project_overview; model.IntroBackground = project.project_background; model.KeyInnovationAndResearchGoals = project.strategy_and_approach; model.ComparisonOfTheMerits = project.merits_comparison; model.TargetAudience = project.target_audience; model.BusinessModelAndMarketPotential = project.commercialisation_strategy; model.MainFunction = project.main_functions_and_deliverables; model.ProjectPlan = project.project_milestones_and_workload_allocation; model.HardwareAndSoftwareRequirements = project.hardware_and_software_requirements; model.ProblemsAndCountermeasures = project.problems_and_countermeasures; model.SavedDate = project.updated_at; model.SubmittedDate = project.submitted_on; model.Availability = project.project_availability; return(model); } return(null); } }
public InitiatedProjectViewModel GetProject(int Id, int groupId = 0) { using (var connection = GetConnection()) { string command = "Select * from Student_Project Inner Join Project on Student_Project.project_id = Project.project_id where Project.project_id = @Id"; if (groupId != 0) { command += " and group_id = @groupId"; } string query = @"Select * from Student_Project Inner Join Project on Student_Project.project_id = Project.project_id where Project.project_id = @Id Select * from Student_Project_Extra where project_id = @Id"; var p = new DynamicParameters(); p.Add("Id", Id); p.Add("groupId", groupId); using (var multi = connection.QueryMultiple(query, p)) { var project = multi.Read <dynamic>().Single(); var fields = multi.Read <dynamic>(); InitiatedProjectViewModel model = new InitiatedProjectViewModel(); if (project != null) { model.GroupId = project.group_id; model.Id = project.project_id; model.Title = project.project_title; model.ProjectOverview = project.project_overview; model.IntroBackground = project.project_background; model.KeyInnovationAndResearchGoals = project.strategy_and_approach; model.ComparisonOfTheMerits = project.merits_comparison; model.TargetAudience = project.target_audience; model.BusinessModelAndMarketPotential = project.commercialisation_strategy; model.MainFunction = project.main_functions_and_deliverables; model.ProjectPlan = project.project_milestones_and_workload_allocation; model.HardwareAndSoftwareRequirements = project.hardware_and_software_requirements; model.ProblemsAndCountermeasures = project.problems_and_countermeasures; model.SavedDate = project.updated_at; model.SubmittedDate = project.submitted_on; model.Availability = project.project_availability; List <Field> dplFields = new List <Field>(); foreach (var i in fields) { Field f = new Field(); f.id = i.field_id; f.label = i.field_name; f.value = i.text_value; dplFields.Add(f); } model.displayFieldsModel = dplFields; return(model); } } return(null); } }
// GET: Project/Edit/5 public ActionResult Edit(int Id) { InitiatedProjectViewModel project = _projectctx.GetProject(Id, HttpContext.Session.GetInt32("GroupId") ?? default(int)); if (project == null) { return(View()); //return HttpNotFound(); } return(View(project)); }
public void DeleteProjectFields(InitiatedProjectViewModel project) { if (project.removeIds != null) { string inClauseParam = "(" + project.removeIds + ")"; using (var connection = GetConnection()) { connection.Execute("Delete From Student_Project_Extra where field_id In " + inClauseParam); } } }
public ActionResult SelfInitiated(string resubmit = "", InitiatedProjectViewModel project = null) { if (resubmit == "" || resubmit == "resubmit") { return(ValidateSubmission(project, resubmit)); } else { ModelState.Clear(); return(View("_Create")); } }
public void UpdateProject(InitiatedProjectViewModel project) { using (var connection = GetConnection()) { var p = new DynamicParameters(); p.Add("@inProjectId", project.Id, dbType: DbType.Int32); p.Add("@inTitle", project.Title, dbType: DbType.String, size: 50); p.Add("@inOverview", project.ProjectOverview, dbType: DbType.String, size: 500); p.Add("@inBackground", project.IntroBackground, dbType: DbType.String, size: 500); p.Add("@inKeyInnovationAndResearchGoal", project.TargetAudience, dbType: DbType.String, size: 500); p.Add("@inComparisonOfTheMerits", project.ComparisonOfTheMerits, dbType: DbType.String, size: 500); p.Add("@inTargetAudience", project.TargetAudience, dbType: DbType.String, size: 500); p.Add("@inBusinessModelAndMarketPotential", project.BusinessModelAndMarketPotential, dbType: DbType.String, size: 500); p.Add("@inMainFunction", project.MainFunction, dbType: DbType.String, size: 500); p.Add("@inProjectPlan", project.ProjectPlan, dbType: DbType.String, size: 500); p.Add("@inHardwareAndSoftwareRequirements", project.HardwareAndSoftwareRequirements, dbType: DbType.String, size: 500); p.Add("@inProblemsAndCountermeasures", project.ProblemsAndCountermeasures, dbType: DbType.String, size: 500); p.Add("@inSavedDate", project.SavedDate, dbType: DbType.DateTime); p.Add("@inSubmittedDate", project.SubmittedDate, dbType: DbType.DateTime); connection.Execute("usp_updateStudentProject", p, commandType: CommandType.StoredProcedure); var model = JsonConvert.DeserializeObject <List <Field> >(project.displayFields); foreach (Field f in model) { if (f.id != 0) { connection.Execute("Update Student_Project_Extra Set field_name = @fieldName, text_value = @textValue where field_id = @fieldId" , new { fieldName = f.label, textValue = f.value, fieldId = f.id }); //connection.Execute("MERGE Student_Project_Extra AS target " + // "USING(SELECT @fieldId, @fieldName, @fieldValue, @projectId) AS source(field_id, field_name, text_value, project_id) " + // "ON(target.field_id = source.field_id) " + // "WHEN MATCHED THEN " + // "UPDATE SET field_name = source.field_name, text_value = source.text_value " + // "WHEN NOT MATCHED THEN " + // "INSERT(field_name, text_value, project_id) " + // "VALUES(source.field_name, source.text_value, source.project_id); " // , new { fieldId = f.id, fieldName = f.label, fieldValue = f.value, projectId = project.Id }); } else { connection.Execute("Insert Into Student_Project_Extra(field_name, text_value, project_id) values(@fieldName, @textValue, @projectId)" , new { fieldName = f.label, textValue = f.value, projectId = project.Id }); } } } }
public void AddSelfInitiatedProject(InitiatedProjectViewModel project, int groupId, int courseId) { using (var connection = GetConnection()) { var p = new DynamicParameters(); p.Add("@inGroupId", groupId, DbType.Int32); p.Add("@inCourseId", courseId, DbType.Int32); p.Add("@inProjectOverview", project.ProjectOverview, dbType: DbType.String); p.Add("@inIntroBackground", project.IntroBackground, dbType: DbType.String); p.Add("@inKeyInnovation", project.KeyInnovationAndResearchGoals, dbType: DbType.String); p.Add("@inComparison", project.ComparisonOfTheMerits, dbType: DbType.String); p.Add("@inBusinessModel", project.BusinessModelAndMarketPotential, dbType: DbType.String); p.Add("@inProjectPlan", project.ProjectPlan, dbType: DbType.String); p.Add("@inProblemsAndCounterMeasure", project.ProblemsAndCountermeasures, dbType: DbType.String); p.Add("@inTargetAudience", project.TargetAudience, dbType: DbType.String); p.Add("@inMainFunction", project.MainFunction, dbType: DbType.String); p.Add("@inHardwareAndSoftwareRequirements", project.HardwareAndSoftwareRequirements, dbType: DbType.String); p.Add("@inProjectTitle", project.Title, dbType: DbType.String); p.Add("@inSavedDate", project.SavedDate, dbType: DbType.DateTime); p.Add("@inSubmittedOn", project.SubmittedDate, dbType: DbType.DateTime); p.Add("@outProjectId", dbType: DbType.Int32, direction: ParameterDirection.Output); connection.Execute("usp_addSelfInitiatedProject", p, commandType: CommandType.StoredProcedure); int projectId = p.Get <int>("@outProjectId"); //var model = JsonConvert.DeserializeObject<List<Field>>(project.displayFields); //string s1 = fieldValues[0].ToString(); //if (labels.Count() > 0) //{ // for (int i = 0; i < labels.Count(); i++) // connection.Execute("Insert Into Student_Project_Extra(field_name, text_value, project_id) values(@fieldName, @textValue, @projectId)", new { fieldName = labels[i].ToString(), textValue = fieldValues[i].ToString(), projectId }); //} if (project.displayFields != null) { var model = JsonConvert.DeserializeObject <List <Field> >(project.displayFields); foreach (Field f in model) { connection.Execute("Insert Into Student_Project_Extra(field_name, text_value, project_id) values(@fieldName, @textValue, @projectId)" , new { fieldName = f.label, textValue = f.value, projectId }); } } } }
public ActionResult Download(int id) { InitiatedProjectViewModel proposal = _proposalctx.GetProposalById(id); string templateName = "External_Project_Proposal.docx"; string path = Path.Combine(environment.ContentRootPath, "~/App_Data/Generated", templateName); string downloadPath = string.Format(@"{0}{1}.docx", path, "-" + proposal.Title); DateTime currentDt = DateTime.Now; DateTime Sem1Start = new DateTime(currentDt.Year, 4, 20); DateTime Sem2Start = new DateTime(currentDt.Year, 10, 19); string semester = ""; if (DateHelper.Between(currentDt, Sem1Start, Sem2Start)) { semester = "1"; } else { semester = "2"; } DocX document = new DocxFormatter().GetInitiatedProjectProposal(currentDt, semester); document.SaveAs(path); using (DocX doc = DocX.Load(path)) { doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("ProjectTitle", proposal.Title)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("ProjectOverview", proposal.ProjectOverview)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("IntroBackground", proposal.IntroBackground)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("Approach", proposal.KeyInnovationAndResearchGoals)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("ComparisonMerits", proposal.ComparisonOfTheMerits)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("TargetAudience", proposal.TargetAudience)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("BusinessModel", proposal.BusinessModelAndMarketPotential)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("MainFunction", proposal.MainFunction)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("ProjectPlan", proposal.ProjectPlan)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("HardwareAndSoftwareRequirements", proposal.HardwareAndSoftwareRequirements)); doc.AddCustomProperty(new Xceed.Words.NET.CustomProperty("ProblemsAndCountermeasures", proposal.ProblemsAndCountermeasures)); doc.SaveAs(downloadPath); } return(File(downloadPath, System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName(downloadPath))); }
public ActionResult Edit(InitiatedProjectViewModel project) { _projectctx.DeleteProjectFields(project); if (project.Submit != "Submit") { if (string.IsNullOrEmpty(project.Title)) { ModelState.Clear(); ModelState.AddModelError("", "Enter the proposal title to save"); } else { if (project.displayFields != null) { var model = JsonConvert.DeserializeObject <List <ViewModels.InitiatedProject.Field> >(project.displayFields); foreach (ViewModels.InitiatedProject.Field f in model) { if (f.value.Length > 500) { ModelState.AddModelError("", "One of the fields '" + f.label + "' has exceeded maximum of 500 characters"); project.displayFieldsModel = model; return(View("Edit", project)); } } } project.SavedDate = DateTime.Now; _projectctx.UpdateProject(project); return(RedirectToAction("SelfInitiated")); } } else { if (ModelState.IsValid) { project.SubmittedDate = DateTime.Now; _projectctx.UpdateProject(project); return(RedirectToAction("Index", "Home")); } } return(View(project)); }
public ActionResult SelfInitiated() { Student student = _studentctx.GetStudent(User.Identity.Name.Substring(1, User.Identity.Name.Length - 1)); if (student.group_id == null) { int? groupId = student.group_id; bool notingroup = groupId.GetValueOrDefault(0) == 0; if (notingroup) { ViewBag.NotInGroup = true; } return(View("_Create", new InitiatedProjectViewModel())); } else { InitiatedProjectViewModel project = _projectctx.GetProjectByGroup(int.Parse(student.group_id.ToString())); return(View("SelfInitiated", project)); } }
public dynamic GetProposalById(int Id) { using (var connection = GetConnection()) { var i = connection.Query("Select * from Industry_Lecturer_Project Inner Join Project on Industry_Lecturer_Project.project_id = Project.project_id where Project.project_id = @Id", new { Id }).SingleOrDefault(); if (i != null) { ProposalViewModel p = new ProposalViewModel(); p.Id = i.project_id; p.LecturerId = i.lecturer_id; p.Title = i.project_title; p.Aims = i.project_aims; p.Objectives = i.project_objectives; p.Deadline = i.deadline.ToString("dd/MM/yyyy"); p.TargetAudience = i.target_audience; p.MainFunction = i.main_functions_and_deliverables; p.HardwareAndSoftwareConfiguration = i.hardware_and_software_requirements; p.Schedule = i.project_milestones; p.CompanyName = i.company_name; p.Address = i.company_postal_address; p.Tel = i.company_telephone_number; p.Fax = i.company_fax_number; p.Email = i.company_email_address; p.LiaisonOfficer = i.company_liaison_officer_name; p.WillingToSponsor = i.company_sponsorship_willingness; p.SubmittedDate = i.submitted_on; p.Availability = i.project_availability; p.ProjectType = "External"; return(p); } else { ProjectRepository projectRepository = new ProjectRepository(); InitiatedProjectViewModel p = projectRepository.GetProject(Id); p.ProjectType = "Student"; return(p); } } }
public void AddSelfInitiatedProject(InitiatedProjectViewModel project, int groupId) { using (var connection = GetConnection()) { var p = new DynamicParameters(); p.Add("@inGroupId", groupId, DbType.Int32); p.Add("@inProjectOverview", project.ProjectOverview, dbType: DbType.String); p.Add("@inIntroBackground", project.IntroBackground, dbType: DbType.String); p.Add("@inKeyInnovation", project.KeyInnovationAndResearchGoals, dbType: DbType.String); p.Add("@inComparison", project.ComparisonOfTheMerits, dbType: DbType.String); p.Add("@inBusinessModel", project.BusinessModelAndMarketPotential, dbType: DbType.String); p.Add("@inProjectPlan", project.ProjectPlan, dbType: DbType.String); p.Add("@inProblemsAndCounterMeasure", project.ProblemsAndCountermeasures, dbType: DbType.String); p.Add("@inTargetAudience", project.TargetAudience, dbType: DbType.String); p.Add("@inMainFunction", project.MainFunction, dbType: DbType.String); p.Add("@inHardwareAndSoftwareRequirements", project.HardwareAndSoftwareRequirements, dbType: DbType.String); p.Add("@inProjectTitle", project.Title, dbType: DbType.String); connection.Execute("usp_addSelfInitiatedProject", p, commandType: CommandType.StoredProcedure); } }
public ActionResult ViewLatestSubmission(int Id) { InitiatedProjectViewModel project = _projectx.GetProjectByGroup(Id); return(Redirect("/proposal/details/" + project.Id)); }
public ActionResult ValidateSubmission(InitiatedProjectViewModel project, string resubmit) { Student student = _studentctx.GetStudent(User.Identity.Name); int? groupId = student.group_id; if (project.Submit != "Submit") { ModelState.Clear(); if (string.IsNullOrEmpty(project.Title)) { ModelState.AddModelError("", "Enter the proposal title to save"); } else { if (project.displayFields != null) { var model = JsonConvert.DeserializeObject <List <ViewModels.InitiatedProject.Field> >(project.displayFields); foreach (ViewModels.InitiatedProject.Field f in model) { if (f.value.Length > 500) { ModelState.AddModelError("", "One of the fields '" + f.label + "' has exceeded maximum of 500 characters"); project.displayFieldsModel = model; return(View("_Create", project)); } } } project.SavedDate = DateTime.Now; _projectctx.AddSelfInitiatedProject(project, (int)groupId, student.course_id); return(RedirectToAction("Index", "Home")); } } else { if (project.displayFields != null) { var model = JsonConvert.DeserializeObject <List <ViewModels.InitiatedProject.Field> >(project.displayFields); foreach (ViewModels.InitiatedProject.Field f in model) { if (f.value.Length > 500) { ModelState.AddModelError("", "One of the fields '" + f.label + "' has exceeded maximum of 500 characters"); return(View("_Create", project)); } } } switch (resubmit) { case "": if (ModelState.IsValid) { if (_projectctx.GetProjectByGroup((int)student.group_id) == null) { project.SubmittedDate = DateTime.Now; _projectctx.AddSelfInitiatedProject(project, (int)groupId, student.course_id); return(RedirectToAction("Index", "Home")); } } break; case "resubmit": project.SubmittedDate = DateTime.Now; _projectctx.AddProjectHistory(_projectctx.GetProjectByGroup((int)student.group_id).Id); _projectctx.AddSelfInitiatedProject(project, (int)groupId, student.course_id); return(RedirectToAction("Index", "Home")); } } return(View("_Create")); }