// 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")); }
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")); }
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 })); }
// 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)); }
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 })); }
// 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)); }