예제 #1
0
        public CodeRuleData Insert(Session session, Guid codeRuleDefinitionId, Guid codeRuleDataFormatId)
        {
            CodeRuleData codeRuleData = null;

            try
            {
                //Get CodeRuleDefinition
                CodeRuleDefinition codeRuleDefinition = session.GetObjectByKey <CodeRuleDefinition>(codeRuleDefinitionId);
                //Get CodeRuleDataFormat
                CodeRuleDataFormat codeRuleDataFormat = session.GetObjectByKey <CodeRuleDataFormat>(codeRuleDataFormatId);
                //Create new CodeRuleStringData
                codeRuleData = new CodeRuleData(session)
                {
                    CodeRuleDataFormatId = codeRuleDataFormat,
                    CodeRuleDataId       = Guid.NewGuid(),
                    CodeRuleDefinitionId = codeRuleDefinition,
                    CreateDate           = DateTime.Now,
                    RowStatus            = Utility.Constant.ROWSTATUS_ACTIVE
                };
                codeRuleData.Save();
                return(codeRuleData);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #2
0
 public void Delete(Session session, Guid codeRuleDefinitionId)
 {
     try
     {
         CodeRuleDefinition codeRuleDefinition =
             session.GetObjectByKey <CodeRuleDefinition>(codeRuleDefinitionId);
         if (codeRuleDefinition != null)
         {
             codeRuleDefinition.RowStatus = Utility.Constant.ROWSTATUS_DELETED;
             codeRuleDefinition.Save();
             if (codeRuleDefinition.CodeRuleData != null)
             {
                 foreach (var data in codeRuleDefinition.CodeRuleData)
                 {
                     data.RowStatus = Utility.Constant.ROWSTATUS_DELETED;
                     data.Save();
                 }
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
        public bool CodeRuleDefinifionCreatingNumberData_PreTransitionCRUD(string transition)
        {
            switch (transition)
            {
            case "Save":
            {
                try
                {
                    ArtifactCodeRuleEditingForm artifactCodeRuleEditingForm = (ArtifactCodeRuleEditingForm)Parent;

                    //Get CodeRuleDataType
                    Guid codeRuleDataTypeId = Guid.Parse(cbCodeRuleDataType.SelectedItem.Value.ToString());

                    //Get CodeRuleDataFormat
                    Guid codeRuleDataFormatId = Guid.Parse(cbCodeRuleDataFormat.SelectedItem.Value.ToString());

                    Guid ruleRepeaterTypeId = Guid.Parse(cbRuleRepeaterType.SelectedItem.Value.ToString());

                    CodeRuleDefinition codeRuleDefinition = codeRuleDefinitionBO.Insert(session,
                                                                                        artifactCodeRuleEditingForm.ArtifactCodeRuleId,
                                                                                        codeRuleDataTypeId,
                                                                                        ParentCodeRuleDefinitionId);

                    int beginNum = (int)spinBeginNumberValue.Number;
                    int step     = (int)spinStep.Number;
                    int endNum   = (int)spinEndNumberValue.Number;

                    CodeRuleData codeRuleData = codeRuleNumberDataBO.Insert(session,
                                                                            codeRuleDefinition.CodeRuleDefinitionId,
                                                                            codeRuleDataFormatId,
                                                                            beginNum,
                                                                            step,
                                                                            endNum,
                                                                            ruleRepeaterTypeId);

                    CodeRuleDefinitionId = codeRuleDefinition.CodeRuleDefinitionId;

                    CodeRuleDataId = codeRuleData.CodeRuleDataId;

                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            default:
                break;
            }
            return(true);
        }
예제 #4
0
        public CodeRuleStringData Update(Session session, Guid codeRuleDefinitionId, Guid codeRuleDataFormatId, string stringValue)
        {
            CodeRuleStringData codeRuleStringData = null;

            try
            {
                CodeRuleDataBO codeRuleDataBO = new CodeRuleDataBO();
                //Check updating CodeRuleDataType already exist
                //Get CodeRuleDataFormat
                CodeRuleDataFormat codeRuleDataFormat =
                    session.GetObjectByKey <CodeRuleDataFormat>(codeRuleDataFormatId);

                //Get CodeRuleDefinition
                CodeRuleDefinition codeRuleDefinition =
                    session.GetObjectByKey <CodeRuleDefinition>(codeRuleDefinitionId);

                codeRuleStringData = (CodeRuleStringData)codeRuleDataBO.GetCodeRuleData(session,
                                                                                        codeRuleDefinition.CodeRuleDefinitionId,
                                                                                        codeRuleDataFormat.CodeRuleDataTypeId.CodeRuleDataTypeId);

                foreach (var item in codeRuleDefinition.CodeRuleData)
                {
                    item.RowStatus = Utility.Constant.ROWSTATUS_INACTIVE;
                    item.Save();
                }

                if (codeRuleStringData == null)
                {
                    codeRuleStringData = Insert(session, codeRuleDefinition.CodeRuleDefinitionId, codeRuleDataFormatId, stringValue);
                }
                else
                {
                    codeRuleStringData.StringValue          = stringValue;
                    codeRuleStringData.CodeRuleDataFormatId = codeRuleDataFormat;
                    codeRuleStringData.RowStatus            = Utility.Constant.ROWSTATUS_ACTIVE;
                    codeRuleStringData.Save();
                }

                return(codeRuleStringData);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public bool CodeRuleDefinifionCreatingStringData_PreTransitionCRUD(string transition)
        {
            switch (transition)
            {
            case "Save":
            {
                try
                {
                    ArtifactCodeRuleEditingForm artifactCodeRuleEditingForm = (ArtifactCodeRuleEditingForm)Parent;

                    //Get CodeRuleDataType
                    Guid codeRuleDataTypeId = Guid.Parse(cbCodeRuleDataType.SelectedItem.Value.ToString());

                    //Get CodeRuleDataFormat
                    Guid codeRuleDataFormatId = Guid.Parse(cbCodeRuleDataFormat.SelectedItem.Value.ToString());

                    CodeRuleDefinition codeRuleDefinition = codeRuleDefinitionBO.Insert(session,
                                                                                        artifactCodeRuleEditingForm.ArtifactCodeRuleId,
                                                                                        codeRuleDataTypeId,
                                                                                        ParentCodeRuleDefinitionId);

                    CodeRuleData codeRuleData = codeRuleStringDataBO.Insert(session,
                                                                            codeRuleDefinition.CodeRuleDefinitionId,
                                                                            codeRuleDataFormatId,
                                                                            txtStringValue.Text);

                    CodeRuleDefinitionId = codeRuleDefinition.CodeRuleDefinitionId;

                    CodeRuleDataId = codeRuleData.CodeRuleDataId;

                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            default:
                break;
            }
            return(true);
        }
예제 #6
0
        public CodeRuleDefinition Update(Session session, Guid codeRuleDefinitionId, Guid codeRuleDataTypeId)
        {
            CodeRuleDefinition codeRuleDefinition = null;

            try
            {
                //Get current CodeRuleDefinition
                codeRuleDefinition = session.GetObjectByKey <CodeRuleDefinition>(codeRuleDefinitionId);
                //Get CodeRuleDataType
                CodeRuleDataType codeRuleDataType = session.GetObjectByKey <CodeRuleDataType>(codeRuleDataTypeId);
                codeRuleDefinition.CodeRuleDataTypeId = codeRuleDataType;
                codeRuleDefinition.Save();
                return(codeRuleDefinition);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
예제 #7
0
        public CodeRuleDefinition Insert(Session session, Guid artifactCodeRuleId, Guid codeRuleDataTypeId, Guid parentCodeRuleDefinitionId)
        {
            CodeRuleDefinition codeRuleDefinition = null;

            try
            {
                //Get ArtifactCodeRule
                ArtifactCodeRule artifactCodeRule =
                    session.GetObjectByKey <ArtifactCodeRule>(artifactCodeRuleId);
                //Get CodeRuleDataType
                CodeRuleDataType codeRuleDataType =
                    session.GetObjectByKey <CodeRuleDataType>(codeRuleDataTypeId);
                //Get parent CodeRuleDefinition
                CodeRuleDefinition parentCodeRuleDefinition = null;
                if (parentCodeRuleDefinitionId != Guid.Empty)
                {
                    parentCodeRuleDefinition = session.GetObjectByKey <CodeRuleDefinition>(parentCodeRuleDefinitionId);
                }
                //Validate
                bool isInsertingValid =
                    isInsertingCodeRuleDefinitionValid(session, artifactCodeRuleId, parentCodeRuleDefinition);

                if (isInsertingValid)
                {
                    //Create new CodeRuleDefinition
                    codeRuleDefinition = new CodeRuleDefinition(session)
                    {
                        ArtifactCodeRuleId         = artifactCodeRule,
                        CodeRuleDataTypeId         = codeRuleDataType,
                        CodeRuleDefinitionId       = Guid.NewGuid(),
                        ParentCodeRuleDefinitionId = parentCodeRuleDefinition,
                        RowStatus = Utility.Constant.ROWSTATUS_ACTIVE
                    };
                    codeRuleDefinition.Save();
                }

                return(codeRuleDefinition);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #8
0
        public CodeRuleNumberData Insert(
            Session session,
            Guid codeRuleDefinitionId,
            Guid codeRuleDataFormatId,
            int beginNumber,
            int step,
            int endNumber,
            Guid ruleRepeaterTypeId)
        {
            CodeRuleNumberData codeRuleNumberData = null;

            try
            {
                //Get CodeRuleDefinition
                CodeRuleDefinition codeRuleDefinition = session.GetObjectByKey <CodeRuleDefinition>(codeRuleDefinitionId);
                //Get CodeRuleDataFormat
                CodeRuleDataFormat codeRuleDataFormat = session.GetObjectByKey <CodeRuleDataFormat>(codeRuleDataFormatId);
                //Get RuleRepeaterType
                RuleRepeaterType ruleRepeaterType = session.GetObjectByKey <RuleRepeaterType>(ruleRepeaterTypeId);
                //Create new CodeRuleStringData
                codeRuleNumberData = new CodeRuleNumberData(session)
                {
                    CodeRuleDataFormatId = codeRuleDataFormat,
                    CodeRuleDataId       = Guid.NewGuid(),
                    CodeRuleDefinitionId = codeRuleDefinition,
                    CreateDate           = DateTime.Now,
                    RowStatus            = Utility.Constant.ROWSTATUS_ACTIVE,
                    BeginNumberValue     = beginNumber,
                    EndNumberValue       = endNumber,
                    LastNumber           = beginNumber - step,
                    RuleRepeaterTypeId   = ruleRepeaterType,
                    Step = step
                };
                codeRuleNumberData.Save();
                return(codeRuleNumberData);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #9
0
        public string GetArtifactCode(Guid artifactCodeRuleId, bool isUpdateLastestWhenIsNumber)
        {
            UnitOfWork uow          = null;
            string     artifactCode = String.Empty;

            try
            {
                uow = XpoHelper.GetNewUnitOfWork();

                CriteriaOperator criteria = CriteriaOperator.And(
                    new BinaryOperator("ArtifactCodeRuleId.ArtifactCodeRuleId", artifactCodeRuleId),
                    new BinaryOperator("RowStatus", Utility.Constant.ROWSTATUS_ACTIVE),
                    new UnaryOperator(UnaryOperatorType.IsNull, "ParentCodeRuleDefinitionId")
                    );
                XPCollection <CodeRuleDefinition> codeRuleDefinitions =
                    new XPCollection <CodeRuleDefinition>(PersistentCriteriaEvaluationBehavior.InTransaction, uow, criteria, false);
                CodeRuleDefinition rootDefinition = codeRuleDefinitions.FirstOrDefault();
                if (rootDefinition == null)
                {
                    return(String.Empty);
                }
                else
                {
                    artifactCode = GetCodeDefinition(uow, rootDefinition, isUpdateLastestWhenIsNumber);
                }
                uow.CommitChanges();
                return(artifactCode);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (uow != null)
                {
                    uow.Dispose();
                }
            }
        }
예제 #10
0
        public CodeRuleNumberData Update(Session session,
                                         Guid codeRuleDefinitionId,
                                         Guid codeRuleDataFormatId,
                                         int beginNumber,
                                         int step,
                                         int endNumber,
                                         Guid ruleRepeaterTypeId)
        {
            CodeRuleNumberData codeRuleNumberData = null;

            try
            {
                CodeRuleDataBO codeRuleDataBO = new CodeRuleDataBO();
                //Check updating CodeRuleDataType already exist
                //Get CodeRuleDataFormat
                CodeRuleDataFormat codeRuleDataFormat =
                    session.GetObjectByKey <CodeRuleDataFormat>(codeRuleDataFormatId);

                //Get CodeRuleDefinition
                CodeRuleDefinition codeRuleDefinition =
                    session.GetObjectByKey <CodeRuleDefinition>(codeRuleDefinitionId);

                codeRuleNumberData = (CodeRuleNumberData)codeRuleDataBO.GetCodeRuleData(session,
                                                                                        codeRuleDefinition.CodeRuleDefinitionId,
                                                                                        codeRuleDataFormat.CodeRuleDataTypeId.CodeRuleDataTypeId);

                foreach (var item in codeRuleDefinition.CodeRuleData)
                {
                    item.RowStatus = Utility.Constant.ROWSTATUS_INACTIVE;
                    item.Save();
                }

                if (codeRuleNumberData == null)
                {
                    codeRuleNumberData =
                        Insert(session,
                               codeRuleDefinition.CodeRuleDefinitionId,
                               codeRuleDataFormatId,
                               beginNumber,
                               step,
                               endNumber,
                               ruleRepeaterTypeId);
                }
                else
                {
                    int  lastestNum         = 0;
                    bool isUpdateLastestNum = false;

                    RuleRepeaterType ruleRepeaterType = session.GetObjectByKey <RuleRepeaterType>(ruleRepeaterTypeId);

                    codeRuleNumberData.BeginNumberValue     = beginNumber;
                    codeRuleNumberData.Step                 = step;
                    codeRuleNumberData.EndNumberValue       = endNumber;
                    codeRuleNumberData.RuleRepeaterTypeId   = ruleRepeaterType;
                    codeRuleNumberData.CodeRuleDataFormatId = codeRuleDataFormat;
                    codeRuleNumberData.RowStatus            = Utility.Constant.ROWSTATUS_ACTIVE;
                    //If lastest number is out of updating range
                    //then update lastest number
                    lastestNum = codeRuleNumberData.LastNumber;
                    if (step > 0)
                    {
                        if (((lastestNum + step) > endNumber) || (lastestNum + step) < beginNumber)
                        {
                            isUpdateLastestNum = true;
                        }
                    }
                    else if (step < 0)
                    {
                        if (((lastestNum + step) < endNumber) || (lastestNum + step) > beginNumber)
                        {
                            isUpdateLastestNum = true;
                        }
                    }
                    if (isUpdateLastestNum)
                    {
                        //update lastest number
                        codeRuleNumberData.LastNumber = beginNumber - step;
                    }
                    codeRuleNumberData.Save();
                }

                return(codeRuleNumberData);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
예제 #11
0
        public bool isInsertingCodeRuleDefinitionValid(Session session, Guid artifactCodeRuleId, CodeRuleDefinition parentCodeRuleDefinition)
        {
            try
            {
                //Get ArtifactCodeRule
                ArtifactCodeRule artifactCodeRule = session.GetObjectByKey <ArtifactCodeRule>(artifactCodeRuleId);

                if (parentCodeRuleDefinition == null)
                {
                    //Is CodeRuleDefinition root of the ArtifactCodeRule exist
                    int rootCount =
                        artifactCodeRule.CodeRuleDefinitions
                        .Where(r => r.RowStatus > 0 && r.ParentCodeRuleDefinitionId == null)
                        .Count();
                    if (rootCount != 0)
                    {
                        return(false);
                    }
                }
                else
                {
                    //Check parentCodeRuleDefinition already has child
                    int countChild = parentCodeRuleDefinition.CodeRuleDefinitions.Count(r => r.RowStatus > 0);
                    if (countChild != 0)
                    {
                        return(false);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
예제 #12
0
        public string GetCodeDefinition(Session session, CodeRuleDefinition codeRuleDefinition, bool isUpdateLastestWhenIsNumber)
        {
            string codeDefinition = String.Empty;

            ArtifactCodeFormater.CodeRuleData         data     = null;
            ArtifactCodeFormater.CodeRuleDataFormater formater = null;
            int beginNum   = 0;
            int step       = 0;
            int endNum     = 0;
            int lastestNum = 0;
            int currentNum = 0;

            //2.1. Get data type

            //2.2. Get format type
            CodeRuleData codeRuleData =
                codeRuleDefinition.CodeRuleData.FirstOrDefault(r => r.RowStatus == Utility.Constant.ROWSTATUS_ACTIVE);

            //Get format code
            string dataFormat = codeRuleData.CodeRuleDataFormatId.Code;

            //2.3. Determine the data type
            //2.3.1. When is STRING
            #region STRING
            if (codeRuleDefinition.CodeRuleDataTypeId.Code.Equals("STRING"))
            {
                CodeRuleStringData _codeRuleStringData = (CodeRuleStringData)codeRuleData;
                data = new ArtifactCodeFormater.CodeRuleData();
                switch (dataFormat)
                {
                case "NORMAL":
                    formater = new ArtifactCodeFormater.CodeRuleDataFormaterString();
                    break;

                case "LOWERCASE":
                    formater = new ArtifactCodeFormater.CodeRuleDataFormaterStringLowerCase();
                    break;

                case "UPPERCASE":
                    formater = new ArtifactCodeFormater.CodeRuleDataFormaterStringUpperCase();
                    break;

                case "ACSII":
                    formater = new ArtifactCodeFormater.CodeRuleDataFormaterStringACSI();
                    break;

                case "UPPERCASE_ACSII":
                    formater = new ArtifactCodeFormater.CodeRuleDataFormaterStringACSI(
                        new ArtifactCodeFormater.CodeRuleDataFormaterStringUpperCase()
                        );
                    break;

                case "LOWERCASE_ACSII":
                    formater = new ArtifactCodeFormater.CodeRuleDataFormaterStringACSI(
                        new ArtifactCodeFormater.CodeRuleDataFormaterStringLowerCase()
                        );
                    break;

                default:
                    break;
                }

                data.Value        = _codeRuleStringData.StringValue;
                data.FormatString = _codeRuleStringData.CodeRuleDataFormatId.FormatString;
            }
            #endregion
            //2.3.2. When is NUMBER
            #region NUMBER
            else if (codeRuleDefinition.CodeRuleDataTypeId.Code.Equals("NUMBER"))
            {
                CodeRuleNumberData _codeRuleNumberData = (CodeRuleNumberData)codeRuleData;
                //2.3.2.1. Get begin number
                beginNum = _codeRuleNumberData.BeginNumberValue;
                //2.3.2.2. Get step
                step = _codeRuleNumberData.Step;
                //2.3.2.3. Get end number
                endNum = _codeRuleNumberData.EndNumberValue;
                //2.3.2.4. Get lastest number
                lastestNum = _codeRuleNumberData.LastNumber;
                //check can get more code
                if (isUpdateLastestWhenIsNumber)
                {
                    if (step > 0)
                    {
                        if ((step + lastestNum) > endNum)
                        {
                            throw new Exception("Definition is invalid");
                        }
                    }
                    else if (step < 0)
                    {
                        if ((step + lastestNum) < endNum)
                        {
                            throw new Exception("Definition is invalid");
                        }
                    }
                    currentNum = lastestNum + step;
                }
                else
                {
                    currentNum = beginNum;
                }
                formater          = new ArtifactCodeFormater.CodeRuleDataFormaterNumber();
                data              = new ArtifactCodeFormater.CodeRuleData();
                data.Value        = currentNum;
                data.FormatString = _codeRuleNumberData.CodeRuleDataFormatId.FormatString;

                if (isUpdateLastestWhenIsNumber)
                {
                    _codeRuleNumberData.LastNumber = currentNum;
                    _codeRuleNumberData.Save();
                }
            }
            #endregion
            //2.3.3. When is DATETIME
            #region DATETIME
            //Get system datetime
            else if (codeRuleDefinition.CodeRuleDataTypeId.Code.Equals("DATETIME"))
            {
                formater          = new ArtifactCodeFormater.CodeRuleDataFormaterDateTime();
                data              = new ArtifactCodeFormater.CodeRuleData();
                data.Value        = DateTime.Now;
                data.FormatString = codeRuleData.CodeRuleDataFormatId.FormatString;
            }
            #endregion

            data.UseFormater(formater);
            codeDefinition = data.GetFormatedValue();

            int countChild = codeRuleDefinition.CodeRuleDefinitions.Where(r => r.RowStatus == Utility.Constant.ROWSTATUS_ACTIVE).Count();
            if (countChild == 0)
            {
                return(codeDefinition);
            }
            else
            {
                CodeRuleDefinition childCodeRuleDefinition =
                    codeRuleDefinition.CodeRuleDefinitions
                    .Where(r => r.RowStatus == Utility.Constant.ROWSTATUS_ACTIVE)
                    .First();
                return(codeDefinition += GetCodeDefinition(session, childCodeRuleDefinition, isUpdateLastestWhenIsNumber));
            }
        }