internal static OracleDynamicParameters GetTextTemplateSaveUpdateQueryParams(TextTemplateDTO textTemplate)
        {
            OracleDynamicParameters dynamicParameters = new OracleDynamicParameters();

            var isactive          = textTemplate.IsActive ? 1 : 0;
            var isAttachPSSLink   = textTemplate.AttachPSSLink ? 1 : 0;
            var isVideoAppoinment = textTemplate.IsVideoAppoinment ? 1 : 0;

            var levelOfCareParam = AssocativeArraysConverter
                                   .ConvertCollectionToPLSQLAssociativeArray(textTemplate.OfficialLevelOfCare, "p_offLevelOfCare");

            var contactTypeParam = AssocativeArraysConverter
                                   .ConvertCollectionToPLSQLAssociativeArray(textTemplate.ContactType, "p_contactType");

            dynamicParameters.AddDynamicParams(levelOfCareParam);
            dynamicParameters.AddDynamicParams(contactTypeParam);
            dynamicParameters.Add("p_oldSMSTextID", GuidConvert.ToRaw(textTemplate.TemplateGUID), OracleMappingType.Raw, ParameterDirection.Input);
            dynamicParameters.Add("p_ruleSetGuid", GuidConvert.ToRaw(textTemplate.RuleSetGUID), OracleMappingType.Raw, ParameterDirection.Input);
            dynamicParameters.Add("p_hospitalID", textTemplate.HospitalID, OracleMappingType.Long, ParameterDirection.Input);
            dynamicParameters.Add("p_departmentID", textTemplate.DepartmentID, OracleMappingType.Long, ParameterDirection.Input);
            dynamicParameters.Add("p_OPDID", textTemplate.OPDID, OracleMappingType.Long, ParameterDirection.Input);
            dynamicParameters.Add("p_locationID", textTemplate.LocationID, OracleMappingType.Long, ParameterDirection.Input);
            dynamicParameters.Add("p_sectionID", textTemplate.SectionID, OracleMappingType.Long, ParameterDirection.Input);
            dynamicParameters.Add("p_wardID", textTemplate.WardID, OracleMappingType.Long, ParameterDirection.Input);
            dynamicParameters.Add("p_SMSTextName", textTemplate.Name, OracleMappingType.Varchar2, ParameterDirection.Input);
            dynamicParameters.Add("p_SMSText", textTemplate.SMSText, OracleMappingType.Varchar2, ParameterDirection.Input);
            dynamicParameters.Add("p_SMSTextTempID", GuidConvert.ToRaw(textTemplate.GroupedTextGUID), OracleMappingType.Raw, ParameterDirection.Input);
            dynamicParameters.Add("p_validFrom", textTemplate.ValidFrom, OracleMappingType.Date, ParameterDirection.Input);
            dynamicParameters.Add("p_validTo", textTemplate.ValidTo, OracleMappingType.Date, ParameterDirection.Input);
            dynamicParameters.Add("p_isActive", isactive, OracleMappingType.Int16, ParameterDirection.Input);
            dynamicParameters.Add("p_sendPSSLink", isAttachPSSLink, OracleMappingType.Int16, ParameterDirection.Input);
            dynamicParameters.Add("p_isVideoCall", isVideoAppoinment, OracleMappingType.Int16, ParameterDirection.Input);
            dynamicParameters.Add("l_SMSTEXTID", null, OracleMappingType.Raw, ParameterDirection.ReturnValue, 16);
            return(dynamicParameters);
        }
示例#2
0
        public override void SetRangeInHash(string key, IEnumerable <KeyValuePair <string, string> > keyValuePairs)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (keyValuePairs == null)
            {
                throw new ArgumentNullException(nameof(keyValuePairs));
            }

            _storage.UseTransaction(connection =>
            {
                foreach (var keyValuePair in keyValuePairs)
                {
                    var oracleDynamicParameters = new OracleDynamicParameters();
                    oracleDynamicParameters.AddDynamicParams(new { KEY = key, FIELD = keyValuePair.Key });
                    oracleDynamicParameters.Add("VALUE", keyValuePair.Value, OracleMappingType.NClob, ParameterDirection.Input);

                    connection.Execute(
                        @"
 MERGE INTO HF_HASH H
      USING (SELECT 1 FROM DUAL) SRC
         ON (H.KEY = :KEY AND H.FIELD = :FIELD)
 WHEN MATCHED THEN
     UPDATE SET VALUE = :VALUE
 WHEN NOT MATCHED THEN
     INSERT (ID, KEY, FIELD, VALUE)
     VALUES (HF_SEQUENCE.NEXTVAL, :KEY, :FIELD, :VALUE)
",
                        oracleDynamicParameters);
                }
            });
        }
示例#3
0
        public override void SetJobParameter(string id, string name, string value)
        {
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            _storage.UseConnection(connection =>
            {
                var oracleDynamicParameters = new OracleDynamicParameters();
                oracleDynamicParameters.AddDynamicParams(new { JOB_ID = id, NAME = name });
                oracleDynamicParameters.Add("VALUE", value, OracleMappingType.NClob, ParameterDirection.Input);
                connection.Execute(
                    @" 
 MERGE INTO HF_JOB_PARAMETER JP
      USING (SELECT 1 FROM DUAL) SRC
         ON (JP.NAME = :NAME AND JP.JOB_ID = :JOB_ID)
 WHEN MATCHED THEN
      UPDATE SET VALUE = :VALUE
 WHEN NOT MATCHED THEN
      INSERT (ID, JOB_ID, NAME, VALUE)
      VALUES (HF_SEQUENCE.NEXTVAL, :JOB_ID, :NAME, :VALUE)
",
                    oracleDynamicParameters);
            });
        }
        public override void SetJobState(string jobId, IState state)
        {
            Logger.TraceFormat("SetJobState jobId={0}", jobId);

            AcquireStateLock();
            AcquireJobLock();

            var stateId = _storage.UseConnection(connection => connection.GetNextId());

            var oracleDynamicParameters = new OracleDynamicParameters();

            oracleDynamicParameters.AddDynamicParams(new
            {
                STATE_ID   = stateId,
                JOB_ID     = jobId,
                NAME       = state.Name,
                REASON     = state.Reason,
                CREATED_AT = DateTime.UtcNow,
                ID         = jobId
            });
            oracleDynamicParameters.Add("DATA", JobHelper.ToJson(state.SerializeData()), OracleMappingType.NClob, ParameterDirection.Input);

            QueueCommand(x => x.Execute(
                             @"
BEGIN
 INSERT INTO HF_JOB_STATE (ID, JOB_ID, NAME, REASON, CREATED_AT, DATA)
      VALUES (:STATE_ID, :JOB_ID, :NAME, :REASON, :CREATED_AT, :DATA);
 
      UPDATE HF_JOB SET STATE_ID = :STATE_ID, STATE_NAME = :NAME WHERE ID = :ID;
END;
",
                             oracleDynamicParameters));
        }
        public override void AddJobState(string jobId, IState state)
        {
            Logger.TraceFormat("AddJobState jobId={0}, state={1}", jobId, state);

            AcquireStateLock();

            var oracleDynamicParameters = new OracleDynamicParameters();

            oracleDynamicParameters.AddDynamicParams(new
            {
                JOB_ID     = jobId,
                NAME       = state.Name,
                REASON     = state.Reason,
                CREATED_AT = DateTime.UtcNow
            });
            oracleDynamicParameters.Add("DATA", JobHelper.ToJson(state.SerializeData()), OracleMappingType.NClob, ParameterDirection.Input);

            QueueCommand(x => x.Execute(
                             " INSERT INTO HF_JOB_STATE (ID, JOB_ID, NAME, REASON, CREATED_AT, DATA) " +
                             "      VALUES (HF_SEQUENCE.NEXTVAL, :JOB_ID, :NAME, :REASON, :CREATED_AT, :DATA)", oracleDynamicParameters));
        }
示例#6
0
        public override string CreateExpiredJob(Job job, IDictionary <string, string> parameters, DateTime createdAt, TimeSpan expireIn)
        {
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }

            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            var invocationData = InvocationData.Serialize(job);

            invocationData.Arguments = null;
            var arguments = InvocationData.Serialize(job);

            Logger.TraceFormat("CreateExpiredJob={0}", JobHelper.ToJson(invocationData));

            return(_storage.UseConnection(connection =>
            {
                var jobId = connection.GetNextJobId();

                var oracleDynamicParameters = new OracleDynamicParameters();
                oracleDynamicParameters.AddDynamicParams(new
                {
                    ID = jobId,
                    CREATED_AT = createdAt,
                    EXPIRE_AT = createdAt.Add(expireIn)
                });
                oracleDynamicParameters.Add("INVOCATION_DATA", JobHelper.ToJson(invocationData), OracleMappingType.NClob, ParameterDirection.Input);
                oracleDynamicParameters.Add("ARGUMENTS", arguments.Arguments, OracleMappingType.NClob, ParameterDirection.Input);

                connection.Execute(
                    @" 
 INSERT INTO HF_JOB (ID, INVOCATION_DATA, ARGUMENTS, CREATED_AT, EXPIRE_AT) 
      VALUES (:ID, :INVOCATION_DATA, :ARGUMENTS, :CREATED_AT, :EXPIRE_AT)
",
                    oracleDynamicParameters);

                if (parameters.Count > 0)
                {
                    var parameterArray = new object[parameters.Count];
                    var parameterIndex = 0;
                    foreach (var parameter in parameters)
                    {
                        var dynamicParameters = new OracleDynamicParameters();
                        dynamicParameters.AddDynamicParams(new
                        {
                            JOB_ID = jobId,
                            NAME = parameter.Key
                        });
                        dynamicParameters.Add("VALUE", parameter.Value, OracleMappingType.NClob, ParameterDirection.Input);

                        parameterArray[parameterIndex++] = dynamicParameters;
                    }

                    connection.Execute(@"INSERT INTO HF_JOB_PARAMETER (ID, NAME, VALUE, JOB_ID) VALUES (HF_SEQUENCE.NEXTVAL, :NAME, :VALUE, :JOB_ID)", parameterArray);
                }

                return jobId.ToString();
            }));
        }