public ActionResult AddProperties(int projectId) { HttpContextWarker contexter = new HttpContextWarker(HttpContext); ProjectsReader dal = new ProjectsReader(); IProject projectToShow = dal.GetProject(projectId); if(!contexter.CanModify(projectToShow)) { return RedirectToAction("NotEnoughRights"); } string culture = contexter.GetCulture(); ViewData["projectProperties"] = ResourcesHelper.GetText("ProjectProperties", culture); ViewData["availableProperties"] = ResourcesHelper.GetText("AvailableProperties", culture); ViewData["createPropertyTitle"] = ResourcesHelper.GetText("CreateProperty", culture); ViewData["backToProjectViewTitle"] = ResourcesHelper.GetText("BackToProjectView", culture); ViewData["nameTitle"] = ResourcesHelper.GetText("Name", culture); ViewData["systemNameTitle"] = ResourcesHelper.GetText("SystemName", culture); ViewData["typeTitle"] = ResourcesHelper.GetText("Type", culture); ViewData["isImportantTitle"] = ResourcesHelper.GetText("IsImportant", culture); ViewData["removeTitle"] = ResourcesHelper.GetText("Remove", culture); ViewData["addTitle"] = ResourcesHelper.GetText("Add", culture); ProjectModel model = new ProjectModel(); model.Id = projectId; model.ProjectProperties = ProjectHelper.GetVisibleProperties(dal, model.Id); if (model.ProjectProperties == null) { return RedirectToAction("BadRequest"); } PropertyModel[] existingProperties = ProjectHelper.ExcludeProperties(dal, model.ProjectProperties); model.OtherProperties = existingProperties; return View(model); }
/// <summary> /// Collects all necessary data for Footer.ascx /// </summary> /// <param name="culture">User language</param> /// <returns>Model for Footer.ascx</returns> public static FooterModel CreateFooterModel(String filter, String tableDefinition, HttpContextWarker context) { String culture = context.GetCulture(); FooterModel model = new FooterModel(); model.Filter = filter; model.TableDefinition = tableDefinition; model.AddProjectTitle = ResourcesHelper.GetText("AddProject", culture); model.IsAdmin = context.User.IsInRole("administrator"); model.ExportTitle = ResourcesHelper.GetText("Export", culture); model.SubmitUploadTitle = ResourcesHelper.GetText("Upload", culture); model.UploadTitle = ResourcesHelper.GetText("Import", culture); return model; }
/// <summary> /// Gives input csv-file to the DAL layer /// </summary> /// <param name="uploadFile">csv-file</param> /// <returns>if operation ended successfully</returns> public ActionResult Import(HttpPostedFileBase uploadFile, String filter, String tableDefinition) { HttpContextWarker contexter = new HttpContextWarker(HttpContext); String culture = contexter.GetCulture(); if (uploadFile == null) { TempData["errorUpload"] = ResourcesHelper.GetText("ErrorWhileUploading", culture); return RedirectToAction("Index", new { filter = filter, tableDefinition = tableDefinition }); } CsvParser parser = new CsvParser(uploadFile.InputStream); Dictionary<int, Evaluation> newRecords = parser.GetValuesForProjects(); if(newRecords == null) { TempData["errorUpload"] = ResourcesHelper.GetText("BadInputCsvFileFormat", contexter.GetCulture()); return RedirectToAction("Index", new { filter = filter, tableDefinition = tableDefinition }); } List<int> badProjects = new List<int>(); List<int> badRights = new List<int>(); Modifier modifier = new Modifier(); ProjectsReader reader = new ProjectsReader(); foreach (KeyValuePair<int, Evaluation> project in newRecords) { IProject modifying = reader.GetProject(project.Key); if(!contexter.CanModify(modifying)) { badRights.Add(project.Key); continue; } if (!modifier.ModifyOrCreate(project.Key, project.Value.Values, (RolablePrincipal)HttpContext.User)) { badProjects.Add(project.Key); } } if (badProjects.Count > 0 || badRights.Count > 0) { TempData["errorUpload"] = ProjectsHelper.FormUploadErrorMessage(badProjects, badRights, culture); } else { TempData["errorUpload"] = ResourcesHelper.GetText("ImportSuccess", culture); } return RedirectToAction("Index", new { filter = filter, tableDefinition = tableDefinition}); }
public ActionResult AddExistingProperty(int projectId, string systemName) { HttpContextWarker contexter = new HttpContextWarker(HttpContext); ProjectsReader dal = new ProjectsReader(); IProject actualProject = dal.GetProject(projectId); if (contexter.CanModify(actualProject)) { try { actualProject.AddProperty(systemName, true, true, User.Identity.Name); } catch (ConnectionException e) { HttpContextWarker context = new HttpContextWarker(HttpContext); TempData["errorMessage"] = ResourcesHelper.GetText("ConnectionError", context.GetCulture()); } } return RedirectToAction("AddProperties", new { projectId = projectId }); }
internal static string CreateNewProperty(int projectId, PropertyModel model, bool important, HttpContextWarker contexter) { ProjectsReader dal = new ProjectsReader(); IProject currentProject = dal.GetProject(projectId); String culture = contexter.GetCulture(); if (!contexter.CanModify(currentProject)) { return ResourcesHelper.GetText("NotEnoughRigts", culture); } try { dal.CreateNewProperty(model.Name, model.SystemName, model.Type, model.AvailableValuesAsArray); } catch (BadSystemNameException) { return ResourcesHelper.GetText("BadPropertySystemName", culture); } catch (BadPropertyTypeException) { return ResourcesHelper.GetText("BadPropertyType", culture); } catch (ConnectionException) { return ResourcesHelper.GetText("ConnectionError", culture); } catch (BadDisplayTypeNameException) { return ResourcesHelper.GetText("BadDisplayType", culture); } try { currentProject.AddProperty(model.SystemName, true, important, contexter.User.Identity.Name); } catch (ConnectionException e) { return ResourcesHelper.GetText("ConnectionError", contexter.GetCulture()); } return null; }
public ActionResult Index(string filter, string tableDefinition) { HttpContextWarker cultureProvider = new HttpContextWarker(HttpContext); if (filter == null) { filter = ""; } if (tableDefinition == null) { tableDefinition = SettingsHelper.Instance.DefaultTableDefinition; } if (TempData["errorUpload"] != null) { ViewData["errorMessage"] = TempData["errorUpload"]; } HttpContextWarker context = new HttpContextWarker(HttpContext); ViewData["filterModel"] = ProjectsHelper.CreateFilterModel(filter, tableDefinition, context.GetCulture()); ViewData["tableModel"] = ProjectsHelper.CreateTableModel(filter, tableDefinition, HttpContext); ViewData["footerModel"] = ProjectsHelper.CreateFooterModel(filter, tableDefinition, context); TempData["exportData"] = ProjectsHelper.CreateExportData((TableModel)ViewData["tableModel"]); return View(); }
/// <summary> /// For using in "ProjectsHelper.ParseForColumns" /// </summary> /// <param name="comaSeparatedProperties">One line of definition</param> /// <returns>Model for column with "user-format exception in header"</returns> /// <exception cref="ArguementException"/> private static ColumnDefinition StringToColumn(string comaSeparatedProperties, HttpContextBase context) { if (context == null) { throw new ArgumentException(); } ColumnDefinition toReturn = new ColumnDefinition(); string[] properties = Regex.Split(comaSeparatedProperties, @"(?<!\\),"); if (properties.Length != 4) { HttpContextWarker cultureProvider = new HttpContextWarker(context); String culture = cultureProvider.GetCulture(); String message = ResourcesHelper.GetText("BadColumnDefinition", culture); throw new ArgumentException(message); } for (int i = 0; i < 4; i++) { properties[i] = Regex.Match(properties[i], @"\A *(.*?) *\z").Groups[1].Value; } toReturn.Header = properties[0]; toReturn.Formula = properties[1]; toReturn.Type = properties[2]; try { toReturn.Width = Int32.Parse(properties[3]); } catch { HttpContextWarker cultureProvider = new HttpContextWarker(context); String culture = cultureProvider.GetCulture(); String message = ResourcesHelper.GetText("BadWidthDefinition", culture); throw new ArgumentException(message); } return toReturn; }
public ActionResult AjaxValueOperation(int id, Object Value) { if(!HttpContext.Request.IsAjaxRequest()) { return Badrequest(); } try { ValueModel model; ProjectsReader dal = new ProjectsReader(); IValue original = dal.GetValue(id); HttpContextWarker contexter = new HttpContextWarker(HttpContext); bool canModify = contexter.CanModify(original.GetProject()); if (contexter.Method.Equals(HttpVerbs.Post)) { original.SetValue(Value); original.Author = contexter.User.Name; original.Time = DateTime.Now; model = new ValueModel(original, canModify); if(!canModify) { throw new NotEnoughRightsException(ResourcesHelper.GetText("OnNotEnoughForModifyingValue", contexter.GetCulture())); } if(!ProjectHelper.Save(model)) { throw new InvalidUserInputException(); } } else { model = new ValueModel(original, canModify); } return PartialView("JustLookValue", model); } catch(ProjectWatcher.Errors.ProjectWatcherException e) { return Json(new {error = e.Message}, JsonRequestBehavior.AllowGet); } }
public ActionResult Index(int projectId) { HttpContextWarker cultureProvider = new HttpContextWarker(HttpContext); string culture = cultureProvider.GetCulture(); ProjectsReader dal = new ProjectsReader(); IProject project = dal.GetProject(projectId); if(project == null) { return RedirectToAction("BadRequest"); } ProjectWithValuesModel model = new ProjectWithValuesModel(project); model.IsEditable = (HttpContext.User.IsInRole("administrator") || model.Owner == HttpContext.User.Identity.Name) ? true : false; return View(model); }
public PartialViewResult EditValue(Int32 id) { ProjectsReader reader = new ProjectsReader(); IValue value = reader.GetValue(id); IProject project = reader.GetProject(value.ProjectId); HttpContextWarker contexter = new HttpContextWarker(HttpContext); if(!contexter.CanModify(project)) { throw new NotEnoughRightsException(); } ValueModel model = new ValueModel(reader.GetValue(id), true); ViewData["culture"] = contexter.GetCulture(); return PartialView("ValueEdit", model); }
public ActionResult DeleteProperty(int projectId, string systemName) { HttpContextWarker contexter = new HttpContextWarker(HttpContext); ProjectsReader dal = new ProjectsReader(); IProject actualProject = dal.GetProject(projectId); if (contexter.CanModify(actualProject)) { actualProject.DeleteProperty(systemName); } return RedirectToAction("AddProperties", new { projectId = projectId }); }
public ActionResult CreationOfNewPropertyClick(PropertyModel model, int projectId) { HttpContextWarker contexter = new HttpContextWarker(HttpContext); String result = ProjectHelper.CreateNewProperty(projectId, model, true, contexter); if (result != null) { HttpContext.Response.StatusCode = 404; return Json(new { error = result }, JsonRequestBehavior.AllowGet); } return new EmptyResult(); }
public ActionResult CreationOfNewProperty(int projectId) { ViewData["projectId"] = projectId; HttpContextWarker cultureProvider = new HttpContextWarker(HttpContext); string culture = cultureProvider.GetCulture(); ViewData["projectId"] = projectId; ViewData["nameTitle"] = ResourcesHelper.GetText("Name", culture); ViewData["sysNameTitle"] = ResourcesHelper.GetText("SystemName", culture); ViewData["typeTitle"] = ResourcesHelper.GetText("Type", culture); ViewData["availableValuesTitle"] = ResourcesHelper.GetText("ValuesInEnumeration", culture); ViewData["isImportantTitle"] = ResourcesHelper.GetText("IsImportant", culture); PropertyModel model = new PropertyModel(); model.Name = ""; model.SystemName = ""; model.Type = "String"; model.AvailableValues = ""; ViewData["availableTypes"] = ProjectHelper.GetAvailableTypesForDropdown(); return PartialView("CreateProperty", model); }
public PartialViewResult ChangeImportance(String systemName, int projectId) { HttpContextWarker contexter = new HttpContextWarker(HttpContext); ProjectsReader dal = new ProjectsReader(); IProject project = dal.GetProject(projectId); if(!contexter.CanModify(project)) { throw new NotEnoughRightsException(); } IValue toChange = project.GetValues().FirstOrDefault(x => x.SystemName == systemName); if (toChange == null) { return PartialView("ChangeImportance", new PropertyModel { IsImportant = false, ProjectId = projectId, SystemName = systemName }); } else { Modifier modifier = new Modifier(); toChange.Important = !toChange.Important; modifier.ModifyImportance(toChange); return PartialView("ChangeImportance", new PropertyModel { IsImportant = toChange.Important, ProjectId = toChange.ProjectId, SystemName = toChange.SystemName}); } }