コード例 #1
0
ファイル: DashboardController.cs プロジェクト: ljsweeny/EECIP
        // GET: ProjectDetails/1
        public ActionResult ProjectDetails(Guid?id)
        {
            // get the agency for which the logged in user is associated
            T_OE_USERS u = db_Accounts.GetT_OE_USERSByIDX(db_Accounts.GetUserIDX());

            if (u != null)
            {
                if (u.ORG_IDX == null)
                {
                    TempData["Error"] = "You are not associated with an agency.";
                    return(RedirectToAction("AccessDenied", "Home"));
                }

                var model = new vmDashboardProjectDetails();
                model.project = db_EECIP.GetT_OE_PROJECTS_ByIDX(id);
                if (model.project == null)
                {
                    model.project = new T_OE_PROJECTS
                    {
                        ORG_IDX     = u.ORG_IDX,
                        PROJECT_IDX = Guid.NewGuid()
                    };
                }
                else
                {
                    model.SelectedProgramAreas = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeSelected(model.project.PROJECT_IDX, "Program Area");
                    model.SelectedFeatures     = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeSelected(model.project.PROJECT_IDX, "Project Feature");
                }
                model.AllProgramAreas = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeAll(model.project.PROJECT_IDX, "Program Area").Select(x => new SelectListItem {
                    Value = x, Text = x
                });
                model.AllFeatures = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeAll(model.project.PROJECT_IDX, "Project Feature").Select(x => new SelectListItem {
                    Value = x, Text = x
                });
                return(View(model));
            }

            TempData["Error"] = "You are unauthorized to edit projects.";
            return(RedirectToAction("AccessDenied", "Home"));
        }
コード例 #2
0
ファイル: DashboardController.cs プロジェクト: ljsweeny/EECIP
        public ActionResult ProjectEdit(vmDashboardProjectDetails model)
        {
            int UserIDX = db_Accounts.GetUserIDX();

            //update project data
            Guid?SuccID = db_EECIP.InsertUpdatetT_OE_PROJECTS(model.project.PROJECT_IDX, model.project.ORG_IDX, model.project.PROJ_NAME,
                                                              model.project.PROJ_DESC, model.project.MEDIA_TAG, model.project.START_YEAR, model.project.PROJ_STATUS,
                                                              model.project.DATE_LAST_UPDATE, model.project.RECORD_SOURCE, model.project.PROJECT_URL, model.project.MOBILE_IND,
                                                              model.project.MOBILE_DESC, model.project.ADV_MON_IND, model.project.ADV_MON_DESC, model.project.BP_MODERN_IND,
                                                              model.project.BP_MODERN_DESC, model.project.COTS, model.project.VENDOR, true, false, UserIDX);

            //update program area tags
            db_EECIP.DeleteT_OE_PROJECT_TAGS(model.project.PROJECT_IDX, "Program Area");
            foreach (string expertise in model.SelectedProgramAreas ?? new List <string>())
            {
                db_EECIP.InsertT_OE_PROJECT_TAGS(model.project.PROJECT_IDX, "Program Area", expertise);
            }


            //update feature tags
            db_EECIP.DeleteT_OE_PROJECT_TAGS(model.project.PROJECT_IDX, "Project Feature");
            foreach (string feature in model.SelectedFeatures ?? new List <string>())
            {
                db_EECIP.InsertT_OE_PROJECT_TAGS(model.project.PROJECT_IDX, "Project Feature", feature);
            }


            if (SuccID != null)
            {
                TempData["Success"] = "Update successful.";
            }
            else
            {
                TempData["Error"] = "Error updating data.";
            }

            return(RedirectToAction("Projects"));
        }
コード例 #3
0
        public ActionResult ProjectEdit(vmDashboardProjectDetails model)
        {
            int UserIDX = db_Accounts.GetUserIDX();

            //CHECK PERMISSIONS
            if (User.IsInRole("Admins") || db_Accounts.UserCanEditOrgIDX(UserIDX, model.project.ORG_IDX.ConvertOrDefault <Guid>()))
            {
                //update project data
                Guid?newProjID = db_EECIP.InsertUpdatetT_OE_PROJECTS(model.project.PROJECT_IDX, model.project.ORG_IDX, model.project.PROJ_NAME ?? "",
                                                                     model.project.PROJ_DESC ?? "", model.project.MEDIA_TAG, model.project.START_YEAR ?? -1, model.project.PROJ_STATUS ?? "",
                                                                     model.project.DATE_LAST_UPDATE ?? -1, model.project.RECORD_SOURCE ?? "", model.project.PROJECT_URL ?? "", model.project.MOBILE_IND,
                                                                     model.project.MOBILE_DESC ?? "", model.project.ADV_MON_IND, model.project.ADV_MON_DESC ?? "", model.project.BP_MODERN_IND,
                                                                     model.project.BP_MODERN_DESC ?? "", model.project.COTS ?? "", model.project.VENDOR ?? "", model.project.PROJECT_CONTACT ?? "", model.project.PROJECT_CONTACT_IDX ?? -1, true, false, UserIDX, null, true);

                if (newProjID != null)
                {
                    Guid newProjID2 = newProjID.ConvertOrDefault <Guid>();
                    //update program area tags
                    db_EECIP.DeleteT_OE_PROJECT_TAGS(newProjID2, "Program Area");
                    foreach (string expertise in model.SelectedProgramAreas ?? new List <string>())
                    {
                        db_EECIP.InsertT_OE_PROJECT_TAGS(newProjID2, "Program Area", expertise);
                    }


                    //update project url
                    db_EECIP.DeleteT_OE_PROJECTS_URL(newProjID2);
                    foreach (T_OE_PROJECT_URLS urls in model.sProjectUrlList ?? new List <T_OE_PROJECT_URLS>())
                    {
                        db_EECIP.InsertT_OE_PROJECTS_URL(newProjID2, urls.PROJECT_URL, urls.PROJ_URL_DESC);
                    }


                    //update feature tags
                    db_EECIP.DeleteT_OE_PROJECT_TAGS(newProjID2, "Project Feature");
                    foreach (string feature in model.SelectedFeatures ?? new List <string>())
                    {
                        db_EECIP.InsertT_OE_PROJECT_TAGS(newProjID2, "Project Feature", feature);
                    }

                    //update files
                    if (model.files != null)
                    {
                        foreach (HttpPostedFileBase file in model.files)
                        {
                            byte[] fileBytes = null;

                            if (file != null)
                            {
                                using (Stream inputStream = file.InputStream)
                                {
                                    MemoryStream memoryStream = inputStream as MemoryStream;
                                    if (memoryStream == null)
                                    {
                                        memoryStream = new MemoryStream();
                                        inputStream.CopyTo(memoryStream);
                                    }
                                    fileBytes = memoryStream.ToArray();

                                    //insert to database
                                    db_EECIP.InsertUpdateT_OE_DOCUMENTS(null, fileBytes, file.FileName, "project", file.ContentType, fileBytes.Length, model.FileDescription, null, newProjID2, null, UserIDX);
                                }


                                //award profile badge
                                if (db_Accounts.UserCanEditOrgIDX(UserIDX, model.project.ORG_IDX.ConvertOrDefault <Guid>()))
                                {
                                    db_Forum.EarnBadgeController(UserIDX, "ProjectDocument");
                                }
                            }
                        }
                    }

                    //award badges for new project
                    if (newProjID2 != model.project.PROJECT_IDX)//new case
                    {
                        db_Forum.EarnBadgeAddProject(UserIDX);
                    }

                    //now update the Azure search
                    AzureSearch.PopulateSearchIndexProject(newProjID2);

                    TempData["Success"] = "Update successful.";
                    return(RedirectToAction("ProjectDetails", "Dashboard", new { id = newProjID2, returnURL = model.ReturnURL }));
                }
                else
                {
                    TempData["Error"] = "Error updating data.";
                }
            }
            else
            {
                TempData["Error"] = "You don't have permissions to edit this project.";
            }

            return(RedirectToAction(model.ReturnURL ?? "Projects", new { selAgency = model.project.ORG_IDX }));
        }
コード例 #4
0
        // GET: /Dashboard/ProjectDetails/1
        /// <param name="id">Only supply for existing case</param>
        /// <param name="orgIDX">Only supply for new case</param>
        public ActionResult ProjectDetails(Guid?id, Guid?orgIDX, string returnURL)
        {
            int UserIDX = db_Accounts.GetUserIDX();
            var model   = new vmDashboardProjectDetails();

            //new case
            if (id == null)
            {
                //if new case and either no org supplied or the org supplied the user doesn't have rights to edit, then fail
                if ((orgIDX == null) || (User.IsInRole("Admins") == false && db_Accounts.UserCanEditOrgIDX(UserIDX, orgIDX.ConvertOrDefault <Guid>()) == false))
                {
                    TempData["Error"] = "You cannot edit projects for this agency.";
                    return(RedirectToAction("AccessDenied", "Home"));
                }

                //if got this far then initialize valid new project
                model.project = new T_OE_PROJECTS
                {
                    ORG_IDX     = orgIDX,
                    PROJECT_IDX = Guid.NewGuid(),
                };
                model.NewProjInd = true;
            }
            else
            {
                model.project = db_EECIP.GetT_OE_PROJECTS_ByIDX(id);
                if (model.project == null)
                {
                    TempData["Error"] = "Project not found.";
                    return(RedirectToAction("AccessDenied", "Home"));
                }
                else
                {
                    //should be existing case
                    if (User.IsInRole("Admins") == false && db_Accounts.UserCanEditOrgIDX(UserIDX, model.project.ORG_IDX.ConvertOrDefault <Guid>()) == false)
                    {
                        TempData["Error"] = "You cannot edit projects for this agency.";
                        return(RedirectToAction("AccessDenied", "Home"));
                    }

                    //existing case, no failure
                    model.SelectedProgramAreas = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeSelected(model.project.PROJECT_IDX, "Program Area");
                    model.SelectedFeatures     = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeSelected(model.project.PROJECT_IDX, "Project Feature");
                    model.files_existing       = db_EECIP.GetT_OE_DOCUMENTS_ByProjectID(model.project.PROJECT_IDX);
                }
            }


            //if got this far (regardless of new or existing) then add more to the model
            T_OE_ORGANIZATION _org = db_Ref.GetT_OE_ORGANIZATION_ByID(model.project.ORG_IDX.ConvertOrDefault <Guid>());

            if (_org != null)
            {
                model.orgName = _org.ORG_NAME;
                model.orgType = _org.ORG_TYPE;
            }
            model.sProjectUrlList = db_EECIP.GetT_OE_PROJECTS_URL_ByProjIDX(model.project.PROJECT_IDX);
            model.ddl_AgencyUsers = ddlHelpers.get_ddl_users_by_organization(model.project.ORG_IDX.ConvertOrDefault <Guid>());
            model.AllProgramAreas = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeAll(model.project.PROJECT_IDX, "Program Area").Select(x => new SelectListItem {
                Value = x, Text = x
            });
            model.AllFeatures = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeAll(model.project.PROJECT_IDX, "Project Feature").Select(x => new SelectListItem {
                Value = x, Text = x
            });
            model.ReturnURL = returnURL ?? "Projects";
            return(View(model));
        }
コード例 #5
0
        public ActionResult ProjectEdit(vmDashboardProjectDetails model)
        {
            int UserIDX = db_Accounts.GetUserIDX();


            model.ProjectOrgs = db_EECIP.GetT_OE_PROJECT_ORGS_ByProject(model.project.PROJECT_IDX);

            //for insert case, project orgs will not have org yet
            if (model.ProjectOrgs.Count == 0 && model.NewProjOrgIDX != null)
            {
                model.ProjectOrgs.Add(db_Ref.GetT_OE_ORGANIZATION_ByID(model.NewProjOrgIDX.ConvertOrDefault <Guid>()));
            }

            //CHECK PERMISSIONS
            if (User.IsInRole("Admins") || db_Accounts.UserCanEditOrgList(UserIDX, model.ProjectOrgs))
            {
                //plain text version of project description
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(model.ProjectRichDesc);
                string projDescPlain = "";
                foreach (HtmlAgilityPack.HtmlNode node in doc.DocumentNode.SelectNodes("//text()"))
                {
                    projDescPlain += node.InnerText;
                }

                //determine record source
                if (db_Accounts.UserCanEditOrgList(UserIDX, model.ProjectOrgs))
                {
                    model.project.RECORD_SOURCE = "Agency supplied";
                }

                //update project data
                Guid?newProjID = db_EECIP.InsertUpdatetT_OE_PROJECTS(model.project.PROJECT_IDX, null, model.project.PROJ_NAME ?? "",
                                                                     projDescPlain, model.ProjectRichDesc ?? "", model.project.MEDIA_TAG, model.project.START_YEAR ?? -1, model.project.PROJ_STATUS ?? "",
                                                                     model.project.DATE_LAST_UPDATE ?? -1, model.project.RECORD_SOURCE ?? "", model.project.PROJECT_URL ?? "", model.project.MOBILE_IND,
                                                                     model.project.MOBILE_DESC ?? "", model.project.ADV_MON_IND, model.project.ADV_MON_DESC ?? "", model.project.BP_MODERN_IND,
                                                                     model.project.BP_MODERN_DESC ?? "", model.project.COTS ?? "", model.project.VENDOR ?? "", model.project.PROJECT_CONTACT ?? "", model.project.PROJECT_CONTACT_IDX ?? -1, true, false, UserIDX, null, true);

                if (newProjID != null)
                {
                    Guid newProjID2 = newProjID.ConvertOrDefault <Guid>();

                    //update project org
                    if (model.NewProjOrgIDX != null)
                    {
                        db_EECIP.InsertUpdateT_OE_PROJECT_ORGS(newProjID2, model.NewProjOrgIDX.ConvertOrDefault <Guid>(), UserIDX);
                    }


                    //update program area tags
                    db_EECIP.DeleteT_OE_PROJECT_TAGS(newProjID2, "Program Area");
                    foreach (string expertise in model.SelectedProgramAreas ?? new List <string>())
                    {
                        db_EECIP.InsertT_OE_PROJECT_TAGS(newProjID2, "Program Area", expertise);
                    }


                    //update project url
                    db_EECIP.DeleteT_OE_PROJECTS_URL(newProjID2);
                    foreach (T_OE_PROJECT_URLS urls in model.sProjectUrlList ?? new List <T_OE_PROJECT_URLS>())
                    {
                        db_EECIP.InsertT_OE_PROJECTS_URL(newProjID2, urls.PROJECT_URL, urls.PROJ_URL_DESC);
                    }


                    //update feature tags
                    db_EECIP.DeleteT_OE_PROJECT_TAGS(newProjID2, "Tags");
                    foreach (string feature in model.SelectedFeatures ?? new List <string>())
                    {
                        db_EECIP.InsertT_OE_PROJECT_TAGS(newProjID2, "Tags", feature);
                    }

                    foreach (T_OE_DOCUMENTS docs in model.files_existing ?? new List <T_OE_DOCUMENTS>())
                    {
                        db_EECIP.InsertUpdateT_OE_DOCUMENTS(docs.DOC_IDX, null, null, "project", null, null, docs.DOC_COMMENT, null, newProjID2, null, UserIDX);
                    }

                    //update files
                    if (model.files != null)
                    {
                        foreach (HttpPostedFileBase file in model.files)
                        {
                            byte[] fileBytes = null;

                            if (file != null)
                            {
                                using (Stream inputStream = file.InputStream)
                                {
                                    MemoryStream memoryStream = inputStream as MemoryStream;
                                    if (memoryStream == null)
                                    {
                                        memoryStream = new MemoryStream();
                                        inputStream.CopyTo(memoryStream);
                                    }
                                    fileBytes = memoryStream.ToArray();

                                    //insert to database
                                    db_EECIP.InsertUpdateT_OE_DOCUMENTS(null, fileBytes, file.FileName, "project", file.ContentType, fileBytes.Length, model.FileDescription, null, newProjID2, null, UserIDX);
                                }


                                //award profile badge
                                if (db_Accounts.UserCanEditOrgIDX(UserIDX, model.project.ORG_IDX.ConvertOrDefault <Guid>()))
                                {
                                    db_Forum.EarnBadgeController(UserIDX, "ProjectDocument");
                                }
                            }
                        }
                    }

                    //award badges for new project
                    if (newProjID2 != model.project.PROJECT_IDX)//new case
                    {
                        db_Forum.EarnBadgeAddProject(UserIDX);
                    }

                    //now update the Azure search
                    AzureSearch.PopulateSearchIndexProject(newProjID2);

                    TempData["Success"] = "Update successful.";
                    return(RedirectToAction("ProjectDetails", "Dashboard", new { id = newProjID2, returnURL = model.ReturnURL }));
                }
                else
                {
                    TempData["Error"] = "Error updating data.";
                }
            }
            else
            {
                TempData["Error"] = "You don't have permissions to edit this project.";
            }

            return(RedirectToAction(model.ReturnURL ?? "Projects", new { selAgency = model.NewProjOrgIDX }));
        }
コード例 #6
0
        // GET: /Dashboard/ProjectDetails/1
        /// <param name="id">Only supply for existing case</param>
        /// <param name="orgIDX">Only supply for new case</param>
        public ActionResult ProjectDetails(Guid?id, Guid?orgIDX, string returnURL)
        {
            int UserIDX = db_Accounts.GetUserIDX();
            var model   = new vmDashboardProjectDetails();

            //new case********************************************
            if (id == null)
            {
                //if new case and either no org supplied or the org supplied the user doesn't have rights to edit, then fail
                if ((orgIDX == null) || (User.IsInRole("Admins") == false && db_Accounts.UserCanEditOrgIDX(UserIDX, orgIDX.ConvertOrDefault <Guid>()) == false))
                {
                    TempData["Error"] = "You cannot edit projects for this agency or no agency supplied.";
                    return(RedirectToAction("AccessDenied", "Home"));
                }

                //if got this far then initialize valid new project
                model.project = new T_OE_PROJECTS
                {
                    PROJECT_IDX = Guid.NewGuid(),
                };

                //populate org for new project
                T_OE_ORGANIZATION o = db_Ref.GetT_OE_ORGANIZATION_ByID(orgIDX.ConvertOrDefault <Guid>());
                model.ProjectOrgs = new List <T_OE_ORGANIZATION>();
                model.ProjectOrgs.Add(o);

                model.NewProjInd    = true;
                model.NewProjOrgIDX = orgIDX;
            }
            else  //edit case********************************************
            {
                model.project = db_EECIP.GetT_OE_PROJECTS_ByIDX(id);
                if (model.project == null)
                {
                    TempData["Error"] = "Project not found.";
                    return(RedirectToAction("AccessDenied", "Home"));
                }
                else
                {
                    //rich text display
                    model.ProjectRichDesc = model.project.PROJ_DESC_HTML;

                    //project orgs
                    model.ProjectOrgs = db_EECIP.GetT_OE_PROJECT_ORGS_ByProject(id.ConvertOrDefault <Guid>());

                    //should be existing case
                    if (User.IsInRole("Admins") == false && db_Accounts.UserCanEditOrgList(UserIDX, model.ProjectOrgs) == false)
                    {
                        TempData["Error"] = "You cannot edit projects for this agency.";
                        return(RedirectToAction("AccessDenied", "Home"));
                    }

                    //existing case, no failure
                    model.SelectedProgramAreas = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeSelected(model.project.PROJECT_IDX, "Program Area");
                    model.SelectedFeatures     = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeSelected(model.project.PROJECT_IDX, "Tags");
                    model.files_existing       = db_EECIP.GetT_OE_DOCUMENTS_ByProjectID(model.project.PROJECT_IDX);
                }
            }


            //if got this far (regardless of new or existing) then add more to the model
            T_OE_ORGANIZATION _org = db_Ref.GetT_OE_ORGANIZATION_ByID(model.ProjectOrgs[0].ORG_IDX.ConvertOrDefault <Guid>());

            if (_org != null && _org.ORG_TYPE == "Governance")
            {
                model.governanceInd = true;
            }

            model.sProjectUrlList = db_EECIP.GetT_OE_PROJECTS_URL_ByProjIDX(model.project.PROJECT_IDX);
            model.ddl_AgencyUsers = ddlHelpers.get_ddl_users_by_organizationList(model.ProjectOrgs);
            model.AllProgramAreas = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeAll(model.project.PROJECT_IDX, "Program Area").Select(x => new SelectListItem {
                Value = x, Text = x
            });
            model.AllFeatures = db_EECIP.GetT_OE_PROJECT_TAGS_ByAttributeAll(model.project.PROJECT_IDX, "Tags").Select(x => new SelectListItem {
                Value = x, Text = x
            });
            //model.ddl_Agencies = ddlHelpers.get_ddl_organizations(true, false);
            model.ReturnURL = returnURL ?? "Projects";
            return(View(model));
        }