Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        // 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));
        }
Beispiel #4
0
 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);
         }
     }
 }
Beispiel #5
0
 public ActionResult SelfInitiated(string resubmit = "", InitiatedProjectViewModel project = null)
 {
     if (resubmit == "" || resubmit == "resubmit")
     {
         return(ValidateSubmission(project, resubmit));
     }
     else
     {
         ModelState.Clear();
         return(View("_Create"));
     }
 }
Beispiel #6
0
        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 });
                    }
                }
            }
        }
Beispiel #7
0
        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 });
                    }
                }
            }
        }
Beispiel #8
0
        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)));
        }
Beispiel #9
0
        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));
        }
Beispiel #10
0
        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);
         }
     }
 }
Beispiel #12
0
        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));
        }
Beispiel #14
0
        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"));
        }