private void GetRequestForms(int idForm, int idView) { var viewNode = XmlForm.SelectSingleNode("//body/views/group/view[viewId='" + idView.ToString() + "']"); var groupView = FormsBoardViewModel.GroupViews.SelectMany(g => g.Views.Where(v => v.Id.Equals(idView))).ToList(); FormsBoardViewModel.CurrentView = groupView.First(); var getAllRequests = viewNode.SelectSingleNode("listAllRequests") != null && viewNode.SelectSingleNode("listAllRequests").InnerText == "true"; var formRequests = FormRequestService.GetFormRequests(idForm, getAllRequests ? string.Empty : UserUtil.DisplayUserName); var jsonResult = new JObject(); var row = 1; foreach (var request in formRequests) { var formData = JObject.Parse(request.JSonFormData); formData.Add("IdFormRequest", request.Id.ToString()); if (viewNode.SelectSingleNode("filter") != null) { var filter = viewNode.SelectSingleNode("filter").InnerText; if (!FormXmlService.ValidateConditions(request.JSonFormData, filter)) { continue; } } jsonResult.Add(row.ToString(), formData); row++; } FormsBoardViewModel.FormRequests = formRequests; var groupedJson = GroupBy(jsonResult, FormsBoardViewModel.CurrentView.GroupBy); var orderByNode = viewNode.SelectSingleNode("orderBy"); if (orderByNode != null && !FormsBoardViewModel.CurrentView.GroupBy.Contains("Date") && !FormsBoardViewModel.CurrentView.GroupBy.Contains("Calendar")) { OrderBy(groupedJson, orderByNode.InnerText); } FormsBoardViewModel.JSonResult = groupedJson; }
private string GetFormHtml(int idForm, bool newForm) { try { var xmlHtml = new StringWriter(); var xslt = new XslCompiledTransform(); var settings = new XsltSettings(); settings.EnableScript = true; settings.EnableDocumentFunction = true; XsltArgumentList args = new XsltArgumentList(); xslt.Load(HostingEnvironment.ContentRootPath + "/XmlForms/FormTransform.xslt", settings, new XmlUrlResolver()); XmlForm = FormXmlService.LoadXmlForm(idForm); FillBaseFormData(XmlForm, newForm); xslt.Transform(XmlForm, null, xmlHtml); return(xmlHtml.ToString()); } catch (Exception e) { throw new Exception(e.Message); } }
private void GetViews(int idForm) { XmlForm = FormXmlService.LoadXmlForm(idForm); FormsBoardViewModel.GroupViews = new List <ViewsGroupViewModel>(); var groupViews = XmlForm.SelectNodes("//body/views/group"); foreach (XmlNode nodeGroup in groupViews) { if (nodeGroup.SelectSingleNode("visible") != null) { var visibleNode = nodeGroup.SelectSingleNode("visible").InnerText; if (!FormXmlService.ValidateConditions(null, visibleNode)) { continue; } } var titleGroup = nodeGroup["title"].InnerText; if (titleGroup.Equals("User()")) { titleGroup = UserUtil.DisplayUserName; } var groupView = new ViewsGroupViewModel { Title = titleGroup, Views = new List <ViewFormsViewModel>() }; var views = nodeGroup.SelectNodes("view"); foreach (XmlNode nodeView in views) { if (nodeView.SelectSingleNode("visible") != null) { var visibleNode = nodeView.SelectSingleNode("visible").InnerText; if (!FormXmlService.ValidateConditions(null, visibleNode)) { continue; } } var view = new ViewFormsViewModel { Id = int.Parse(nodeView["viewId"].InnerText), Title = nodeView["name"].InnerText, GroupBy = nodeView["groupBy"] == null ? "" : nodeView["groupBy"].InnerText, ViewColumns = new List <ViewColumn>() }; var columns = nodeView.SelectNodes("columns/column"); foreach (XmlNode nodeColumn in columns) { var column = new ViewColumn { Name = nodeColumn["name"].InnerText, ControlId = nodeColumn["controlId"] == null ? null : nodeColumn["controlId"].InnerText, FunctionControlId = nodeColumn["functionControlId"] == null ? null : nodeColumn["functionControlId"].InnerText }; view.ViewColumns.Add(column); } groupView.Views.Add(view); } FormsBoardViewModel.GroupViews.Add(groupView); } }
private void FillBaseFormData(XmlDocument xml, bool newForm) { var statusDisplayName = string.Empty; var status = string.Empty; var reference = string.Empty; if (newForm) { statusDisplayName = xml.SelectSingleNode("//body/statuses/status[order=0]/displayName").InnerXml; status = xml.SelectSingleNode("//body/statuses/status[order=0]/name").InnerXml; FormRequestViewModel.CreatedBy = UserUtil.DisplayUserName; FormRequestViewModel.UserAssigned = UserUtil.DisplayUserName; if (xml.SelectSingleNode("//body/initialInput/createdBy") != null) { xml.SelectSingleNode("//body/initialInput/createdBy").InnerXml = UserUtil.DisplayUserName; } if (xml.SelectSingleNode("//body/initialInput/createdByEmail") != null) { xml.SelectSingleNode("//body/initialInput/createdByEmail").InnerXml = UserUtil.UserEmail; } if (xml.SelectSingleNode("//body/initialInput/createdDate") != null) { xml.SelectSingleNode("//body/initialInput/createdDate").InnerXml = DateTime.Now.ToString("MM/dd/yyyy"); } if (xml.SelectSingleNode("//body/initialInput/userAssigned") != null) { xml.SelectSingleNode("//body/initialInput/userAssigned").InnerXml = UserUtil.DisplayUserName; } if (xml.SelectSingleNode("//body/fields/field[controlId='Reference']") != null) { reference = FormRequestService.GetNextReferenceCode(xml.SelectSingleNode("//body/referenceCode").InnerXml); xml.SelectSingleNode("//body/fields/field[controlId='Reference']/value").InnerXml = reference; } } else { statusDisplayName = xml.SelectSingleNode("//body/statuses/status[name='" + FormRequestViewModel.StatusId + "']/displayName").InnerXml; status = xml.SelectSingleNode("//body/statuses/status[name='" + FormRequestViewModel.StatusId + "']/name").InnerXml; if (xml.SelectSingleNode("//body/initialInput/formRequestId") != null) { xml.SelectSingleNode("//body/initialInput/formRequestId").InnerXml = FormRequestViewModel.Id.ToString(); } if (xml.SelectSingleNode("//body/initialInput/createdBy") != null) { xml.SelectSingleNode("//body/initialInput/createdBy").InnerXml = FormXmlService.GetValue(FormRequestViewModel.JSonFormData, "field(createdBy)"); } if (xml.SelectSingleNode("//body/initialInput/createdByEmail") != null) { xml.SelectSingleNode("//body/initialInput/createdByEmail").InnerXml = FormXmlService.GetValue(FormRequestViewModel.JSonFormData, "field(createdByEmail)"); } if (xml.SelectSingleNode("//body/initialInput/createdDate") != null) { xml.SelectSingleNode("//body/initialInput/createdDate").InnerXml = FormXmlService.GetValue(FormRequestViewModel.JSonFormData, "field(createdDate)"); } if (xml.SelectSingleNode("//body/initialInput/userAssigned") != null) { xml.SelectSingleNode("//body/initialInput/userAssigned").InnerXml = FormRequestViewModel.UserAssigned; } if (xml.SelectSingleNode("//body/fields/field[controlId='Reference']") != null) { xml.SelectSingleNode("//body/fields/field[controlId='Reference']/value").InnerXml = FormXmlService.GetValue(FormRequestViewModel.JSonFormData, "field(reference)"); } LoadAttachedFilesIntoXML(xml); } if (xml.SelectSingleNode("//body/initialInput/currentUser") != null) { xml.SelectSingleNode("//body/initialInput/currentUser").InnerXml = UserUtil.DisplayUserName; } if (xml.SelectSingleNode("//body/initialInput/currentUserEmail") != null) { xml.SelectSingleNode("//body/initialInput/currentUserEmail").InnerXml = UserUtil.UserEmail; } if (xml.SelectSingleNode("//body/initialInput/status") != null) { xml.SelectSingleNode("//body/initialInput/status").InnerXml = statusDisplayName; } if (xml.SelectSingleNode("//body/initialInput/statusId") != null) { xml.SelectSingleNode("//body/initialInput/statusId").InnerXml = status; } FormRequestViewModel.FormId = int.Parse(xml.SelectSingleNode("//body/idForm").InnerXml); FormRequestViewModel.StatusDisplayName = statusDisplayName; FormRequestViewModel.StatusId = status; if (!string.IsNullOrEmpty(reference)) { FormRequestViewModel.Reference = reference; } }
private void LoadActions(string status) { //UpdateCulture(); var closeForm = (IActionViewModel)ActionViewModel.Clone(); HeaderViewModel.CloseForm = closeForm; //HeaderViewModel.CloseForm.Title = Resources.Language.lblCloseForm; HeaderViewModel.CloseForm.Title = Constants.Close; if (FormRequestViewModel.UserAssigned.ToLower() != UserUtil.DisplayUserName.ToLower()) { return; } var saveForm = (IActionViewModel)ActionViewModel.Clone(); HeaderViewModel.SaveForm = saveForm; //HeaderViewModel.SaveForm.Title = Resources.Language.lblSaveForm; HeaderViewModel.SaveForm.Title = Constants.Save; if (!string.IsNullOrEmpty(status) && XmlForm != null) { FormRequestViewModel.HeaderViewModel.FormActions = new List <IActionViewModel>(); var actionNodes = XmlForm.SelectNodes("//body/statuses/status[name='" + status + "']/actions/action"); foreach (XmlNode action in actionNodes) { var visibleCondition = ""; if (action["visible"] != null) { visibleCondition = action["visible"].InnerText; string[] functions = { "parameter(", "role(" }; foreach (var func in functions) { while (visibleCondition.Contains(func)) { var index = visibleCondition.IndexOf(func); var endIndex = visibleCondition.IndexOf(")", index); var parameter = visibleCondition.Substring(index, endIndex - index + 1); var value = FormXmlService.GetValue(FormRequestViewModel.JSonFormData, parameter); visibleCondition = visibleCondition.Replace(parameter, "'" + value + "'"); } } } var newStatusNode = XmlForm.SelectSingleNode("//body/statuses/status[name='" + action["targetStatus"].InnerText + "']"); var newAction = new ActionViewModel { Id = action["name"].InnerText, RequestFormId = FormRequestViewModel.Id, Title = action["displayName"].InnerText, RequiredFields = action["requiredFields"] == null ? null : action["requiredFields"].InnerText, SendEmailNotification = action["sendEmailNotification"] == null ? null : action["sendEmailNotification"].InnerText, ConfirmationText = action["confirmationText"] == null ? "Are you sure you want to realize this action?" : action["confirmationText"].InnerText, CommentRequired = action["commentRequired"] == null || action["commentRequired"].InnerText != "true" ? false : true, HistoryText = action["historyText"] == null ? string.Empty : action["historyText"].InnerText, VisibleValidation = action["visible"] == null ? "" : visibleCondition, JSFunction = action["jsFunction"] == null ? "" : action["jsFunction"].InnerText, AddCommentToList = action["addCommentToList"] == null ? "" : action["addCommentToList"].InnerText, CancelStatusChange = action["cancelStatusChange"] == null || string.IsNullOrEmpty(action["cancelStatusChange"].InnerText) || action["cancelStatusChange"].InnerText.ToLower() != "true" ? false : true, NewStatus = action["targetStatus"].InnerText, NewStatusDisplayName = newStatusNode["displayName"].InnerText }; FormRequestViewModel.HeaderViewModel.FormActions.Add(newAction); } } }