private void GetTags(LawSyncDocumentDetail lawDocument, List <LawMetadataBEO> metaDataList, out bool isError)
        {
            isError = false;
            if (_jobParameter.MappingTags == null || !_jobParameter.MappingTags.Any())
            {
                return;
            }
            var documentTag = GetDocumentTags(lawDocument.DocumentReferenceId, _datasetCollectionId, out isError);

            foreach (var lawMappingTag in _jobParameter.MappingTags)
            {
                var docTag =
                    documentTag.FirstOrDefault(
                        f =>
                        f.TagId.ToString(CultureInfo.InvariantCulture)
                        .Equals(lawMappingTag.MappingTagId));

                var metaData = new LawMetadataBEO
                {
                    Name  = lawMappingTag.Name,
                    Id    = lawMappingTag.Id,             //Not Required
                    Value = (docTag != null),
                    IsTag = true
                };

                metaDataList.Add(metaData);
            }
        }
        private static LawMetadataBEO CloneLawMetadata(LawMetadataBEO o)
        {
            var ret = new LawMetadataBEO()
            {
                Id    = o.Id,
                IsTag = o.IsTag,
                Name  = o.Name,
                Type  = o.Type,
                Value = o.Value
            };

            return(ret);
        }
        private List <LawMetadataBEO> GetFields(LawSyncDocumentDetail lawDocument, List <LawMetadataBEO> metaDataList, out bool isError)
        {
            isError = false;
            if (_jobParameter.MappingFields == null || !_jobParameter.MappingFields.Any())
            {
                return(metaDataList);
            }

            var document = GetDocumentDetails(lawDocument.DocumentReferenceId, _datasetCollectionId, out isError);

            foreach (var lawMappingField in _jobParameter.MappingFields)
            {
                var docField =
                    document.FieldList.FirstOrDefault(
                        f =>
                        f.FieldId.ToString(CultureInfo.InvariantCulture)
                        .Equals(lawMappingField.MappingFieldId));
                if (docField == null)
                {
                    continue;
                }

                var datasetField = _dataset.DatasetFieldList.FirstOrDefault(f => f.ID.ToString(CultureInfo.InvariantCulture)
                                                                            .Equals(lawMappingField.MappingFieldId));
                var format = string.Empty;
                if (datasetField != null)
                {
                    format = datasetField.FieldType.DataFormat;
                }

                var metaData = new LawMetadataBEO
                {
                    Name  = lawMappingField.Name,
                    Id    = lawMappingField.Id,             //Not Required
                    Type  = lawMappingField.FieldType,
                    Value = ConvertFieldValueIntoLawType(docField.FieldValue, lawMappingField.FieldType, format)
                };

                metaDataList.Add(metaData);
            }
            return(metaDataList);
        }
        void SetMetadataForDcoument(LawSyncDocumentDetail lawDocument)
        {
            try
            {
                var metaDataList = new List <LawMetadataBEO>();
                //1) Get Fields
                bool isErrorInGetFields;
                metaDataList = GetFields(lawDocument, metaDataList, out isErrorInGetFields);
                //2) Get Tag
                bool isErrorInGetTags;
                GetTags(lawDocument, metaDataList, out isErrorInGetTags);
                //3) Law sync Tag
                var lawSyncTag = new LawMetadataBEO
                {
                    Name  = _jobParameter.LawSyncTagName,
                    Value = true,
                    IsTag = true
                };
                metaDataList.Add(lawSyncTag);
                lawDocument.MetadataList = metaDataList;

                if (isErrorInGetFields || isErrorInGetTags)
                {
                    ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber,
                                 Constants.LawSyncFailureinGetMetadataMessage);
                    _documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument, (int)LawSyncProcessState.Failed));
                    lawDocument.IsErrorOnGetMetadata = true;
                }
            }
            catch (Exception ex)
            {
                ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber,
                             Constants.LawSyncFailureinGetMetadataMessage);
                _documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument, (int)LawSyncProcessState.Failed));
                lawDocument.IsErrorOnGetMetadata = true;
                ex.AddDbgMsg("Law Document Id:{0}", lawDocument.LawDocumentId);
                ex.Trace().Swallow();
                ReportToDirector(ex);
            }
        }
        protected void btnSyncMetadata_Click(object sender, EventArgs e)
        {
            try
            {
                string lawIniFile = txtLawIniFile.Text;
                List<string> fieldNames = SplitStr(txtFieldNames.Text);
                List<string> fieldTypes = SplitStr(txtFieldTypes.Text);
                List<string> fieldValues = SplitStr(txtFieldValues.Text);
                List<string> tagNames = SplitStr(txtTagNames.Text);
                List<string> tagValues = SplitStr(txtTagValues.Text);
                IEVLawAdapter adapter = EVLawAdapterFactory.NewEVLawAdapter(lawIniFile, "law_user", "law32sql");

                string[] range = txtLawDocIDRange.Text.Split(" -".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                int lawDocIdBegin = Convert.ToInt32(range[0]);
                int lawDocIdEnd = Convert.ToInt32(range[1]);
                int fieldCount = fieldNames.Count;
                int tagCount = tagNames.Count;
                int i;
                List<LawMetadataBEO> metadatas = new List<LawMetadataBEO>();
                for (i = 0; i < fieldCount; i++)
                {
                    string inputFieldValue = fieldValues[i];
                    LawFieldTypeBEO lawFieldType;
                    Object fieldValue;
                    bool isFieldValueNull = "null".Equals(inputFieldValue, StringComparison.InvariantCultureIgnoreCase);


                    switch (fieldTypes[i])
                    {
                        case "string":
                            lawFieldType = LawFieldTypeBEO.String;
                            fieldValue = isFieldValueNull ? null : inputFieldValue;
                            break;
                        case "int":
                            lawFieldType = LawFieldTypeBEO.Numeric;
                            fieldValue = isFieldValueNull ? null : (Object) Convert.ToInt32(inputFieldValue);
                            break;
                        case "date":
                            lawFieldType = LawFieldTypeBEO.DateTime;
                            fieldValue = isFieldValueNull
                                ? null
                                : (Object) DateTime.ParseExact(inputFieldValue, "yyyy-MM-dd HH:mm:ss",
                                    CultureInfo.CurrentCulture);
                            break;
                        default:
                            throw new Exception("Invalid fieldType: " + fieldTypes[i]);
                    }



                    var metadata = new LawMetadataBEO
                                   {
                                       IsTag = false,
                                       Name = fieldNames[i],
                                       Type = lawFieldType,
                                       Value = fieldValue
                                   };
                    metadatas.Add(metadata);
                    adapter.CreateField(fieldNames[i], lawFieldType);
                }

                for (i = 0; i < tagCount; i++)
                {
                    var metadata = new LawMetadataBEO
                                   {
                                       IsTag = true,
                                       Name = tagNames[i],
                                       Value =
                                           tagValues[i].Equals("true", StringComparison.OrdinalIgnoreCase)
                                               ? true
                                               : false
                                   };
                    metadatas.Add(metadata);
                    adapter.CreateTag(tagNames[i]);
                }
                var lawDocs = new List<LawDocumentBEO>();
                for (int docId = lawDocIdBegin; docId <= lawDocIdEnd; docId++)
                {
                    var lawDoc = new LawDocumentBEO()
                                 {
                                     LawDocId = docId,
                                     LawMetadatas = CloneLawMetadataList(metadatas)
                                 };
                    lawDocs.Add(lawDoc);
                }

                List<string> metadataNames = new List<string>();
                metadataNames.AddRange(fieldNames);
                metadataNames.AddRange(tagNames);
                // fieldNames.SafeForEach(o => adapter.CreateField(o, LawFieldTypeBEO.Numeric));
                // tagNames.SafeForEach(o => adapter.CreateTag(o));

                adapter.UpdateLawMetadata(lawDocs, metadataNames);
                ltlResult.Text = "Law Sync Success";

            }
            catch (Exception ex)
            {
                ltlResult.Text = string.Format("Error Code: {0}\r\nUser Message: {1}\r\nDebug Message: {2}\r\n{3}", ex.GetErrorCode(),
                    ex.ToUserString(), ex.ToDebugString(), ex.ToString());

            }
        }
 private static LawMetadataBEO CloneLawMetadata(LawMetadataBEO o)
 {
     var ret = new LawMetadataBEO()
               {
                   Id = o.Id,
                   IsTag = o.IsTag,
                   Name = o.Name,
                   Type = o.Type,
                   Value = o.Value
               };
     return ret;
 }
            void SetMetadataForDcoument(LawSyncDocumentDetail lawDocument)
        {
            try
            {
                var metaDataList = new List<LawMetadataBEO>();
                //1) Get Fields
                bool isErrorInGetFields;
                metaDataList = GetFields(lawDocument, metaDataList, out isErrorInGetFields);
                //2) Get Tag
                bool isErrorInGetTags;
                GetTags(lawDocument, metaDataList, out isErrorInGetTags);
                //3) Law sync Tag 
                var lawSyncTag = new LawMetadataBEO
                                 {
                                     Name = _jobParameter.LawSyncTagName,
                                     Value = true,
                                     IsTag = true
                                 };
                metaDataList.Add(lawSyncTag);
                lawDocument.MetadataList = metaDataList;

                if (isErrorInGetFields || isErrorInGetTags)
                {
                    ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber,
                        Constants.LawSyncFailureinGetMetadataMessage);
                    _documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument, (int)LawSyncProcessState.Failed));
                    lawDocument.IsErrorOnGetMetadata = true;
                }

            }
            catch (Exception ex)
            {
                ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber,
                    Constants.LawSyncFailureinGetMetadataMessage);
                _documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument, (int)LawSyncProcessState.Failed));
                lawDocument.IsErrorOnGetMetadata = true;
                ex.AddDbgMsg("Law Document Id:{0}", lawDocument.LawDocumentId);
                ex.Trace().Swallow();
                ReportToDirector(ex);
            }
        }
        private List<LawMetadataBEO> GetFields(LawSyncDocumentDetail lawDocument, List<LawMetadataBEO> metaDataList, out bool isError)
        {
            isError = false;
            if (_jobParameter.MappingFields == null || !_jobParameter.MappingFields.Any()) return metaDataList;

            var document = GetDocumentDetails(lawDocument.DocumentReferenceId, _datasetCollectionId, out isError);

            foreach (var lawMappingField in _jobParameter.MappingFields)
            {
                var docField =
                    document.FieldList.FirstOrDefault(
                        f =>
                            f.FieldId.ToString(CultureInfo.InvariantCulture)
                                .Equals(lawMappingField.MappingFieldId));
                if (docField == null) continue;

               var datasetField=  _dataset.DatasetFieldList.FirstOrDefault(f => f.ID.ToString(CultureInfo.InvariantCulture)
                   .Equals(lawMappingField.MappingFieldId));
                var format=string.Empty;
                if (datasetField != null)
                {
                    format = datasetField.FieldType.DataFormat;
                }

                var metaData = new LawMetadataBEO
                               {
                                   Name = lawMappingField.Name,
                                   Id = lawMappingField.Id, //Not Required
                                   Type = lawMappingField.FieldType,
                                   Value = ConvertFieldValueIntoLawType(docField.FieldValue, lawMappingField.FieldType, format)
                               };

                metaDataList.Add(metaData);
            }
            return metaDataList;
        }
        private void GetTags(LawSyncDocumentDetail lawDocument, List<LawMetadataBEO> metaDataList, out bool isError)
        {
            isError = false;
            if (_jobParameter.MappingTags == null || !_jobParameter.MappingTags.Any()) return;
            var documentTag = GetDocumentTags(lawDocument.DocumentReferenceId, _datasetCollectionId, out isError);
            foreach (var lawMappingTag in _jobParameter.MappingTags)
            {
                var docTag =
                    documentTag.FirstOrDefault(
                        f =>
                            f.TagId.ToString(CultureInfo.InvariantCulture)
                                .Equals(lawMappingTag.MappingTagId));

                var metaData = new LawMetadataBEO
                               {
                                   Name = lawMappingTag.Name,
                                   Id = lawMappingTag.Id, //Not Required
                                   Value = (docTag != null),
                                   IsTag = true
                               };

                metaDataList.Add(metaData);
            }
        }
        protected void btnSyncMetadata_Click(object sender, EventArgs e)
        {
            try
            {
                string        lawIniFile  = txtLawIniFile.Text;
                List <string> fieldNames  = SplitStr(txtFieldNames.Text);
                List <string> fieldTypes  = SplitStr(txtFieldTypes.Text);
                List <string> fieldValues = SplitStr(txtFieldValues.Text);
                List <string> tagNames    = SplitStr(txtTagNames.Text);
                List <string> tagValues   = SplitStr(txtTagValues.Text);
                IEVLawAdapter adapter     = EVLawAdapterFactory.NewEVLawAdapter(lawIniFile, "law_user", "law32sql");

                string[] range         = txtLawDocIDRange.Text.Split(" -".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                int      lawDocIdBegin = Convert.ToInt32(range[0]);
                int      lawDocIdEnd   = Convert.ToInt32(range[1]);
                int      fieldCount    = fieldNames.Count;
                int      tagCount      = tagNames.Count;
                int      i;
                List <LawMetadataBEO> metadatas = new List <LawMetadataBEO>();
                for (i = 0; i < fieldCount; i++)
                {
                    string          inputFieldValue = fieldValues[i];
                    LawFieldTypeBEO lawFieldType;
                    Object          fieldValue;
                    bool            isFieldValueNull = "null".Equals(inputFieldValue, StringComparison.InvariantCultureIgnoreCase);


                    switch (fieldTypes[i])
                    {
                    case "string":
                        lawFieldType = LawFieldTypeBEO.String;
                        fieldValue   = isFieldValueNull ? null : inputFieldValue;
                        break;

                    case "int":
                        lawFieldType = LawFieldTypeBEO.Numeric;
                        fieldValue   = isFieldValueNull ? null : (Object)Convert.ToInt32(inputFieldValue);
                        break;

                    case "date":
                        lawFieldType = LawFieldTypeBEO.DateTime;
                        fieldValue   = isFieldValueNull
                                ? null
                                : (Object)DateTime.ParseExact(inputFieldValue, "yyyy-MM-dd HH:mm:ss",
                                                              CultureInfo.CurrentCulture);
                        break;

                    default:
                        throw new Exception("Invalid fieldType: " + fieldTypes[i]);
                    }



                    var metadata = new LawMetadataBEO
                    {
                        IsTag = false,
                        Name  = fieldNames[i],
                        Type  = lawFieldType,
                        Value = fieldValue
                    };
                    metadatas.Add(metadata);
                    adapter.CreateField(fieldNames[i], lawFieldType);
                }

                for (i = 0; i < tagCount; i++)
                {
                    var metadata = new LawMetadataBEO
                    {
                        IsTag = true,
                        Name  = tagNames[i],
                        Value =
                            tagValues[i].Equals("true", StringComparison.OrdinalIgnoreCase)
                                               ? true
                                               : false
                    };
                    metadatas.Add(metadata);
                    adapter.CreateTag(tagNames[i]);
                }
                var lawDocs = new List <LawDocumentBEO>();
                for (int docId = lawDocIdBegin; docId <= lawDocIdEnd; docId++)
                {
                    var lawDoc = new LawDocumentBEO()
                    {
                        LawDocId     = docId,
                        LawMetadatas = CloneLawMetadataList(metadatas)
                    };
                    lawDocs.Add(lawDoc);
                }

                List <string> metadataNames = new List <string>();
                metadataNames.AddRange(fieldNames);
                metadataNames.AddRange(tagNames);
                // fieldNames.SafeForEach(o => adapter.CreateField(o, LawFieldTypeBEO.Numeric));
                // tagNames.SafeForEach(o => adapter.CreateTag(o));

                adapter.UpdateLawMetadata(lawDocs, metadataNames);
                ltlResult.Text = "Law Sync Success";
            }
            catch (Exception ex)
            {
                ltlResult.Text = string.Format("Error Code: {0}\r\nUser Message: {1}\r\nDebug Message: {2}\r\n{3}", ex.GetErrorCode(),
                                               ex.ToUserString(), ex.ToDebugString(), ex.ToString());
            }
        }