/// <summary> /// Update Event Type Data /// </summary> /// <param name="instanceId"></param> /// <param name="manager"></param> public static void UpdateEventTypeData(dynamic instanceId, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SP, "AddEventTypeData"); dataModelManager.AddParameter("InstanceId", Enums.ParameterType._int, instanceId); manager.ExecuteStoreProcedure(dataModelManager.DataModel); }
/// <summary> /// Get Instance Xml /// </summary> /// <param name="insstanceId"></param> /// <returns></returns> public static string GetInstanceXML(string insstanceId, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, "Instance"); dataModelManager.AddResultSet(new List <string>() { "DCRXML" }); if (!string.IsNullOrEmpty(insstanceId)) { dataModelManager.AddFilter("Id", Enums.ParameterType._int, insstanceId, Enums.CompareOperator.equal, Enums.LogicalOperator.none); } else { return(string.Empty); } var data = manager.SelectData(dataModelManager.DataModel); if (data.Rows.Count > 0) { return(data.Rows[0]["DCRXML"].ToString()); } else { return(string.Empty); } }
/// <summary> /// Sync Events /// </summary> /// <param name="instanceId"></param> /// <param name="xml"></param> /// <param name="responsibleId"></param> public static void SyncEvents(string instanceId, string xml, string responsibleId, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SP, "SyncEvents"); dataModelManager.AddParameter("InstanceId", Enums.ParameterType._int, instanceId); dataModelManager.AddParameter("EventXML", Enums.ParameterType._xml, xml); dataModelManager.AddParameter("LoginUser", Enums.ParameterType._int, responsibleId); manager.ExecuteStoreProcedure(dataModelManager.DataModel); }
/// <summary> /// Save parameters /// </summary> /// <param name="parameters"></param> private static void SaveEventTypeDataParamertes(string instanceId, string parametersXML, string method, Exception ex, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.INSERT, DBEntityNames.Tables.AcadreLog.ToString()); dataModelManager.AddParameter(DBEntityNames.AcadreLog.Method.ToString(), Enums.ParameterType._string, method); dataModelManager.AddParameter(DBEntityNames.AcadreLog.Parameters.ToString(), Enums.ParameterType._xml, parametersXML); dataModelManager.AddParameter(DBEntityNames.AcadreLog.IsSuccess.ToString(), Enums.ParameterType._boolean, bool.FalseString); dataModelManager.AddParameter(DBEntityNames.AcadreLog.ErrorStatement.ToString(), Enums.ParameterType._string, ex.Message); dataModelManager.AddParameter(DBEntityNames.AcadreLog.ErrorStackTrace.ToString(), Enums.ParameterType._string, ex.StackTrace); dataModelManager.AddParameter(DBEntityNames.AcadreLog.InstanceId.ToString(), Enums.ParameterType._string, instanceId); manager.InsertData(dataModelManager.DataModel); }
/// <summary> /// Update simulation Id in instance table /// </summary> /// <param name="simulationId"></param> public static void UpdateInstance(string instanceId, string simulationId, string xml, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.UPDATE, "Instance"); dataModelManager.AddParameter("SimulationId", Enums.ParameterType._int, simulationId); dataModelManager.AddFilter("Id", Enums.ParameterType._int, instanceId, Enums.CompareOperator.equal, Enums.LogicalOperator.none); if (!string.IsNullOrEmpty(xml)) { dataModelManager.AddParameter("DCRXML", Enums.ParameterType._xml, xml); } manager.UpdateData(dataModelManager.DataModel); }
public static string getXmlFromGuid(InitializeFormInput input) { try { _dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, Enums.Tables.DCR_Subscription.ToString()); _dataModelManager.AddResultSet(new List <String> { "SubscriptionGUID", "DCRGraphID", "DCRUserName", "DCRPassword" }); _dataModelManager.AddFilter("SubscriptionGUID", Enums.ParameterType._string, input.Guid, Enums.CompareOperator.equal, Enums.LogicalOperator.none); var data = _sqlManager.SelectData(_dataModelManager.DataModel); if (data.Rows.Count == 0) { Errors.Add(new Error("getXmlFromGuid", 404, "Internal Error", input.Guid + " not found in database", new Input(input.Guid))); return(null); } else { try { var graphID = data.Rows[0]["DCRGraphID"].ToString(); var username = data.Rows[0]["DCRUserName"].ToString(); var password = data.Rows[0]["DCRPassword"].ToString(); //HERE: search repository given the graphID. Parse XML and add to activeforms. var xml = _dcrService.GetProcess(graphID, username, password); return(xml); } catch (RestRequestException e) { System.Net.HttpStatusCode code = e.statusCode; var st = 500; if (code == System.Net.HttpStatusCode.Forbidden) { st = 401; } else if (code == System.Net.HttpStatusCode.Unauthorized) { st = 403; } Errors.Add(new Error("getXmlFromGuid", st, "Internal Error", e.Message, new Input(input.Guid))); return(null); } } } catch (SqlCommandException e) { Errors.Add(new Error("getXmlFromGuid", 500, "Sql error: " + e.command, e.Message)); return(null); } }
/// <summary> /// Add a document /// </summary> /// <param name="documentName"></param> /// <param name="type"></param> /// <param name="link"></param> public static void AddDocument(string documentName, string type, string link, string instanceId, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.INSERT, DBEntityNames.Tables.Document.ToString()); dataModelManager.AddParameter(DBEntityNames.Document.Title.ToString(), Enums.ParameterType._string, documentName); dataModelManager.AddParameter(DBEntityNames.Document.Type.ToString(), Enums.ParameterType._string, type); dataModelManager.AddParameter(DBEntityNames.Document.Link.ToString(), Enums.ParameterType._string, link); dataModelManager.AddParameter(DBEntityNames.Document.Responsible.ToString(), Enums.ParameterType._string, "$(loggedInUser)"); if (!string.IsNullOrEmpty(instanceId)) { dataModelManager.AddParameter(DBEntityNames.Document.InstanceId.ToString(), Enums.ParameterType._int, instanceId); } manager.InsertData(dataModelManager.DataModel); }
/// <summary> /// Replace key values with actual employee values /// </summary> /// <param name="value"></param> private static string ReplaceValueWithEmployeeData(string columnName, string instanceId, IManager manager, IDataModelManager dataModelManager) { // get selected employee sam account name dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, DBEntityNames.Tables.InstanceExtension.ToString()); dataModelManager.AddResultSet(new List <string>() { DBEntityNames.InstanceExtension.Employee.ToString() }); dataModelManager.AddFilter(DBEntityNames.InstanceExtension.InstanceId.ToString(), Enums.ParameterType._string, instanceId, Enums.CompareOperator.equal, Enums.LogicalOperator.none); var employeeId = manager.SelectData(dataModelManager.DataModel); if (employeeId.Rows.Count > 0) { var viewName = Configurations.Config.EmployeeView; // sql query dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, viewName); dataModelManager.AddResultSet(new List <string>() { columnName }); dataModelManager.AddFilter("EmployeeId", Enums.ParameterType._string, employeeId.Rows[0][DBEntityNames.InstanceExtension.Employee.ToString()].ToString(), Enums.CompareOperator.equal, Enums.LogicalOperator.none); try { var columnValue = manager.SelectData(dataModelManager.DataModel); return(columnValue.Rows[0][columnName].ToString()); } catch (Exception ex) { Logger logger = LogManager.GetCurrentClassLogger(); logger.Error(ex, "Error"); } } return(string.Empty); }
// GET: File public FileResult DownloadFile(string link) { _dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, DBEntityNames.Tables.Document.ToString()); _dataModelManager.AddResultSet(new List <string>() { DBEntityNames.Document.Link.ToString(), DBEntityNames.Document.Title.ToString(), DBEntityNames.Document.Responsible.ToString(), DBEntityNames.Document.InstanceId.ToString(), DBEntityNames.Document.Type.ToString() }); _dataModelManager.AddFilter(DBEntityNames.Document.Link.ToString(), Enums.ParameterType._string, link, Enums.CompareOperator.like, Enums.LogicalOperator.none); var data = _manager.SelectData(_dataModelManager.DataModel); if (data.Rows.Count > 0) { var path = string.Empty; var type = data.Rows[0]["Type"].ToString(); switch (type) //TODO: Maybe needs to be extended, when we are to actually show the journalnotes, and be able to download them { case "PersonalDocument": var currentUser = Common.GetCurrentUserName(); path = Configurations.Config.PersonalFileLocation + "\\" + currentUser + "\\" + data.Rows[0]["Link"].ToString(); break; case "InstanceDocument": var instanceId = data.Rows[0]["InstanceId"].ToString(); path = Configurations.Config.InstanceFileLocation + "\\" + instanceId + "\\" + data.Rows[0]["Link"].ToString(); break; } string fileName = data.Rows[0]["Title"].ToString() + Path.GetExtension(link); byte[] filedata = System.IO.File.ReadAllBytes(path); string contentType = MimeMapping.GetMimeMapping(path); var cd = new System.Net.Mime.ContentDisposition { FileName = fileName, Inline = true, }; Response.AppendHeader("Content-Disposition", cd.ToString()); return(File(filedata, contentType)); } else { throw new Exception("File not found"); } }
/// <summary> /// Get formdata as html /// </summary> /// <param name="formId"></param> /// <param name="manager"></param> /// <param name="dataModelManager"></param> /// <returns></returns> public static string GetFormHtml(string formId, IManager manager, IDataModelManager dataModelManager) { var html = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "HtmlTemplates/FormTemplate.html"); dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, "FormItem"); dataModelManager.AddResultSet(new List <string> { "Id", "ItemId", "ItemText", "IsGroup", "SequenceNumber" }); dataModelManager.AddFilter("FormId", Enums.ParameterType._int, formId, Enums.CompareOperator.equal, Enums.LogicalOperator.none); var formItems = manager.SelectData(dataModelManager.DataModel); var list = formItems.AsEnumerable().ToList(); var groups = list.Where(x => Boolean.Parse(x["IsGroup"].ToString())).OrderBy(x => int.Parse(x["SequenceNumber"].ToString())).ToList(); var formData = string.Empty; var sequenceNumber = 1; foreach (var group in groups) { formData += "<h3 style=\"color:rgb(64,173,72);page-break-inside: avoid;\">" + group["ItemText"].ToString() + "</h3>"; var questions = list.Where(x => !string.IsNullOrEmpty(x["ItemId"].ToString())).Where(x => x["ItemId"].ToString() == group["Id"].ToString()).OrderBy(x => int.Parse(x["SequenceNumber"].ToString())).ToList(); foreach (var question in questions) { var seqNumber = string.Empty; if (Boolean.Parse(question["IsGroup"].ToString()) == false) { seqNumber = sequenceNumber + ". "; } formData += "<p style=\"margin-left:20px;page-break-inside: avoid;\">" + seqNumber + question["ItemText"].ToString() + " </p>"; sequenceNumber++; } } html = html.Replace("#FormData#", formData); return(html); }
/// <summary> /// Add a journal note to the history table /// </summary> /// <param name="instanceId"></param> /// <param name="eventId"></param> /// <param name="documentId"></param> /// <param name="type"></param> /// <param name="title"></param> /// <param name="eventDate"></param> /// <param name="isLocked"></param> public static void AddJournalHistory(string instanceId, string eventId, string documentId, string type, string title, DateTime eventDateTime, IManager manager, IDataModelManager dataModelManager) { if (!string.IsNullOrEmpty(instanceId)) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.INSERT, DBEntityNames.Tables.JournalHistory.ToString()); dataModelManager.AddParameter(DBEntityNames.JournalHistory.InstanceId.ToString(), Enums.ParameterType._int, instanceId.ToString()); if (eventId != null) { dataModelManager.AddParameter(DBEntityNames.JournalHistory.EventId.ToString(), Enums.ParameterType._int, eventId.ToString()); } if (documentId != null) { dataModelManager.AddParameter(DBEntityNames.JournalHistory.DocumentId.ToString(), Enums.ParameterType._int, documentId.ToString()); } dataModelManager.AddParameter(DBEntityNames.JournalHistory.Type.ToString(), Enums.ParameterType._string, type); dataModelManager.AddParameter(DBEntityNames.JournalHistory.Title.ToString(), Enums.ParameterType._string, title); dataModelManager.AddParameter(DBEntityNames.JournalHistory.EventDate.ToString(), Enums.ParameterType._datetime, eventDateTime.ToString()); dataModelManager.AddParameter(DBEntityNames.JournalHistory.CreationDate.ToString(), Enums.ParameterType._datetime, DateTime.Now.ToString()); dataModelManager.AddParameter(DBEntityNames.JournalHistory.IsLocked.ToString(), Enums.ParameterType._boolean, "False"); manager.InsertData(dataModelManager.DataModel); } }
/// <summary> /// Add a document /// </summary> /// <param name="documentName"></param> /// <param name="type"></param> /// <param name="link"></param> public static string AddDocument(string documentName, string type, string link, string instanceId, bool isDraft, DateTime eventDateTime, IManager manager, IDataModelManager dataModelManager) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.INSERT, DBEntityNames.Tables.Document.ToString()); dataModelManager.AddParameter(DBEntityNames.Document.Title.ToString(), Enums.ParameterType._string, documentName); dataModelManager.AddParameter(DBEntityNames.Document.Type.ToString(), Enums.ParameterType._string, type); dataModelManager.AddParameter(DBEntityNames.Document.Link.ToString(), Enums.ParameterType._string, link); dataModelManager.AddParameter(DBEntityNames.Document.Responsible.ToString(), Enums.ParameterType._string, "$(loggedInUser)"); dataModelManager.AddParameter(DBEntityNames.Document.UploadDate.ToString(), Enums.ParameterType._datetime, DateTime.Now.ToString()); dataModelManager.AddParameter(DBEntityNames.Document.IsLocked.ToString(), Enums.ParameterType._boolean, "false"); dataModelManager.AddParameter(DBEntityNames.Document.IsDraft.ToString(), Enums.ParameterType._boolean, isDraft.ToString()); if (!string.IsNullOrEmpty(instanceId)) { dataModelManager.AddParameter(DBEntityNames.Document.InstanceId.ToString(), Enums.ParameterType._int, instanceId); } var dataTable = manager.InsertData(dataModelManager.DataModel); var documentId = dataTable.Rows[0].ItemArray[0].ToString(); AddJournalHistory(instanceId, null, documentId, type, documentName, eventDateTime, manager, dataModelManager); return(documentId); }
/// <summary> /// Get responsible all details with Id /// </summary> /// <param name="manager"></param> /// <param name="dataModelManager"></param> /// <returns></returns> public static DataTable GetResponsibleFullDetails(IManager manager, IDataModelManager dataModelManager, string samAccountName = "") { if (string.IsNullOrEmpty(samAccountName)) { var claim = ((ClaimsIdentity)Thread.CurrentPrincipal.Identity).FindFirst(ClaimTypes.Email); var userName = claim?.Value; if (userName == null) { claim = ((ClaimsIdentity)Thread.CurrentPrincipal.Identity).FindFirst(ClaimTypes.Upn); } samAccountName = claim?.Value; } dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, "UserDetail"); dataModelManager.AddResultSet(new List <string> { "Id", "SamAccountName", "Name", "Title", "Department", "ManagerId", "IsManager" }); dataModelManager.AddFilter("SamAccountName", Enums.ParameterType._string, samAccountName, Enums.CompareOperator.equal, Enums.LogicalOperator.none); var data = manager.SelectData(dataModelManager.DataModel); return(data); }
public IHttpActionResult AdvanceTime() { _dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SP, "AdvanceTime"); var data = _manager.ExecuteStoreProcedure(_dataModelManager.DataModel); foreach (DataRow row in data.Rows) { var instanceId = row["Id"].ToString(); var xml = row["DCRXML"].ToString(); var simulationId = row["SimId"].ToString(); var graphId = row["GraphId"].ToString(); var time = Convert.ToDateTime(row["NextTime"].ToString()); _dcrService.AdvanceTime(graphId, simulationId, time.ToString("o")); var eventsXml = _dcrService.GetPendingOrEnabled(graphId, simulationId); Common.SyncEvents(instanceId, eventsXml, 0.ToString(), _manager, _dataModelManager); Common.UpdateEventTypeData(instanceId, _manager, _dataModelManager); AutomaticEvents(instanceId, graphId, simulationId, 0.ToString()); } return(Ok(data)); }
// POST api/values public IHttpActionResult AddProcess(List <Model> input) { var countAdded = 0; // add Instance foreach (var process in input) { var graphXml = string.Empty; graphXml = _dCRService.GetProcess(process.GraphId); _dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, DBEntityNames.Tables.Process.ToString()); _dataModelManager.AddFilter(DBEntityNames.Process.GraphId.ToString(), Enums.ParameterType._int, process.GraphId.ToString(), Enums.CompareOperator.equal, Enums.LogicalOperator.and); _dataModelManager.AddFilter(DBEntityNames.Process.Status.ToString(), Enums.ParameterType._boolean, Boolean.FalseString, Enums.CompareOperator.equal, Enums.LogicalOperator.none); _dataModelManager.AddResultSet(new List <string> { DBEntityNames.Process.Id.ToString(), DBEntityNames.Process.GraphId.ToString(), DBEntityNames.Process.Status.ToString() }); var processes = _manager.SelectData(_dataModelManager.DataModel); if (processes.Rows.Count < 1) { _dataModelManager.GetDefaultDataModel(Enums.SQLOperation.INSERT, DBEntityNames.Tables.Process.ToString()); _dataModelManager.AddParameter(DBEntityNames.Process.Title.ToString(), Enums.ParameterType._string, process.Title); _dataModelManager.AddParameter(DBEntityNames.Process.GraphId.ToString(), Enums.ParameterType._int, process.GraphId.ToString()); _dataModelManager.AddParameter(DBEntityNames.Process.DCRXML.ToString(), Enums.ParameterType._xml, graphXml); try { var processId = _manager.InsertData(_dataModelManager.DataModel); var phases = _dCRService.GetProcessPhases(process.GraphId); _dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SP, DBEntityNames.StoredProcedures.AddProcessPhases.ToString()); _dataModelManager.AddParameter(DBEntityNames.AddProcessPhases.ProcessId.ToString(), Enums.ParameterType._int, (processId.Rows[0]["Id"]).ToString()); _dataModelManager.AddParameter(DBEntityNames.AddProcessPhases.PhaseXml.ToString(), Enums.ParameterType._xml, phases); _manager.ExecuteStoreProcedure(_dataModelManager.DataModel); countAdded++; } catch { } } else { UpdateProcessAndPhases(processes.Rows[0][DBEntityNames.Process.Id.ToString()].ToString(), processes.Rows[0][DBEntityNames.Process.GraphId.ToString()].ToString(), process.Title); countAdded++; } } if (countAdded > 0) { return(Ok(countAdded)); } return(Conflict()); }
/// <summary> /// Replace event type keys with actual values /// </summary> /// <param name="value"></param> /// <param name="instanceId"></param> /// <param name="manager"></param> /// <param name="dataModelManager"></param> /// <returns></returns> public static dynamic ReplaceEventTypeKeyValues(string value, string instanceId, IManager manager, IDataModelManager dataModelManager) { var instanceTitle = string.Empty; var caseForeignNo = string.Empty; var internalCaseId = string.Empty; dynamic returVal = value; // make a one time call to database for case title and case foreign number if ((value.Contains("$(Title)") || value.Contains("$(CaseNoForeign)") || value.Contains("$(InternalCaseId)")) && (string.IsNullOrEmpty(instanceTitle) && string.IsNullOrEmpty(caseForeignNo) && string.IsNullOrEmpty(internalCaseId))) { dataModelManager.GetDefaultDataModel(Enums.SQLOperation.SELECT, "Instance"); dataModelManager.AddResultSet(new List <string>() { "Title", "CaseNoForeign", "InternalCaseID" }); dataModelManager.AddFilter("Id", Enums.ParameterType._int, instanceId, Enums.CompareOperator.equal, Enums.LogicalOperator.none); var instanceDetails = manager.SelectData(dataModelManager.DataModel); instanceTitle = instanceDetails.Rows[0]["Title"].ToString(); caseForeignNo = instanceDetails.Rows[0]["CaseNoForeign"].ToString(); internalCaseId = instanceDetails.Rows[0]["InternalCaseID"].ToString(); } if (value.Contains("$(Title)") && !string.IsNullOrEmpty(instanceTitle)) { returVal = value.Replace("$(Title)", instanceTitle); } else if (value.Contains("$(CaseNoForeign)") && !string.IsNullOrEmpty(caseForeignNo)) { returVal = value.Replace("$(CaseNoForeign)", caseForeignNo); } else if (value.Contains("$(InternalCaseId)") && !string.IsNullOrEmpty(internalCaseId)) { returVal = value.Replace("$(InternalCaseId)", internalCaseId); } else if (value.Contains("$(employee.")) { var occurences = value.Occurences("$(employee."); while (value.Contains("$(employee.") && occurences > 0) { var startIndexColumnKey = value.IndexOf("$(employee."); var endIndexColumnKey = -1; foreach (var key in value) { endIndexColumnKey++; if (key == ')') { break; } } var keyToReplace = value.Substring(startIndexColumnKey, (endIndexColumnKey + 1) - startIndexColumnKey); var startIndexColumnName = keyToReplace.IndexOf("."); startIndexColumnName++; var endIndexColumnName = -1; foreach (var key in keyToReplace) { endIndexColumnName++; if (key == ')') { break; } } var columnName = keyToReplace.Substring(startIndexColumnName, endIndexColumnName - startIndexColumnName); var columnValue = ReplaceValueWithEmployeeData(columnName, instanceId, manager, dataModelManager); if (!string.IsNullOrEmpty(columnValue)) { value = value.Replace(keyToReplace, columnValue); } occurences--; } returVal = value; } else if (value.Contains("$(loggedInUser)")) { returVal = value.Replace("$(loggedInUser)", GetCurrentUserName()); } else if (value.Equals("$(now)")) { returVal = DateTime.Now; } else if (value.Contains("$(now)")) { returVal = value.Replace("$(now)", DateTime.Now.ToString()); } return(returVal); }