示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        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);
            }
        }
示例#7
0
        /// <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);
        }
示例#8
0
        /// <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);
        }
示例#9
0
        // 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");
            }
        }
示例#10
0
        /// <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);
        }
示例#11
0
 /// <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);
     }
 }
示例#12
0
        /// <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);
        }
示例#13
0
        /// <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);
        }
示例#14
0
        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));
        }
示例#15
0
        // 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());
        }
示例#16
0
        /// <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);
        }