Пример #1
0
        /// <summary>
        /// Allocate a single register.
        /// </summary>
        public Register AllocateRegister(RCategory category, RType type)
        {
            // Allow an additional register
            var result = new Register(lastRegisterIndex++, category, type);
            registers.Add(result);

            return result;
        }
Пример #2
0
        /// <summary>
        /// Allocate a single register.
        /// </summary>
        public Register AllocateRegister(RCategory category, RType type)
        {
            // Allow an additional register
            var result = new Register(lastRegisterIndex++, category, type);

            registers.Add(result);

            return(result);
        }
Пример #3
0
        /// <summary>
        /// Allocate a double register used for wide arguments.
        /// </summary>
        public Tuple<Register, Register> AllocateWideRegister(RCategory category)
        {
            // Allow an additional register
            var first = new Register(lastRegisterIndex++, category, RType.Wide) { Flags = RFlags.KeepWithNext };
            var second = new Register(lastRegisterIndex++, category, RType.Wide2);
            registers.Add(first);
            registers.Add(second);

            return Tuple.Create(first, second);
        }
Пример #4
0
 public static KeyValueTypeStringModel ToKeyValueModel(this RCategory category, bool @checked)
 {
     if (category == null)
     {
         return(null);
     }
     return(new KeyValueTypeStringModel()
     {
         Value = category.Id,
         Checked = @checked,
         Text = category.Name
     });
 }
Пример #5
0
        public async Task <CategoryGetResponse> CategoryGet(CategoryGetRequest request)
        {
            CategoryGetResponse response = new CategoryGetResponse();

            try
            {
                RCategory[] categories = await _categoryService.Get(request.LanguageCurrentId);

                if (categories.Length > 0)
                {
                    if (!string.IsNullOrEmpty(request.Id))
                    {
                        RCategory currentCategory = categories.FirstOrDefault(p => p.Id == request.Id);
                        if (currentCategory != null)
                        {
                            categories = RCategory.RemoveCurrentTree(categories, currentCategory);
                        }
                    }
                    response.Parents = categories?.Select(p => p.ToModel()).ToArray();
                }
                RLanguage[] languages = await _languageService.Get();

                if (languages.Length > 0)
                {
                    response.Languages = languages.Select(p => p.ToKeyValueModel()).ToArray();
                }
                if (!string.IsNullOrEmpty(request.Id))
                {
                    RCategory category = await _categoryService.Get(request.LanguageId, request.Id);

                    if (category == null)
                    {
                        response.SetFail(BaseResponse.ErrorCodeEnum.CategoryNotFound);
                        return(response);
                    }
                    response.Category = category.ToModel();
                }
                else
                {
                    response.Category = new CategoryModel();
                }
                response.SetSucess();
            }
            catch (Exception e)
            {
                response.SetFail(e);
                _logger.LogError(e, e.Message, request);
            }
            return(response);
        }
Пример #6
0
        /// <summary>
        /// Allocate a double register used for wide arguments.
        /// </summary>
        public Tuple <Register, Register> AllocateWideRegister(RCategory category)
        {
            // Allow an additional register
            var first = new Register(lastRegisterIndex++, category, RType.Wide)
            {
                Flags = RFlags.KeepWithNext
            };
            var second = new Register(lastRegisterIndex++, category, RType.Wide2);

            registers.Add(first);
            registers.Add(second);

            return(Tuple.Create(first, second));
        }
Пример #7
0
 public static JsTreeModel ToJstreeStateModel(this RCategory category, bool opened, bool selected, bool disabled)
 {
     if (category == null)
     {
         return(null);
     }
     return(new JsTreeModel()
     {
         Id = category.Id,
         Text = category.Name,
         Parent = string.IsNullOrEmpty(category.ParentId) ? "#" : category.ParentId,
         State = new JstreeStateModel()
         {
             Disabled = disabled,
             Opened = opened,
             Selected = selected
         }
     });
 }
Пример #8
0
 public static CategoryModel ToModel(this RCategory category)
 {
     if (category == null)
     {
         return(null);
     }
     return(new CategoryModel()
     {
         Name = category.Name,
         ParentId = category.ParentId,
         Description = category.Description,
         DisplayOrder = category.DisplayOrder,
         Id = category.Id,
         LanguageId = category.LanguageId,
         Status = category.Status,
         Code = category.Code,
         Logos = category.Logos
     });
 }
        public async Task <ICommandResult> Handle(CategoryChangeCommand mesage)
        {
            try
            {
                Category  category       = new Category();
                RCategory categoryFromDb = await _categoryService.Get(mesage.LanguageId, mesage.Id);

                //string code = string.Empty;
                //if (string.IsNullOrEmpty(categoryFromDb.Code))
                //{
                //    long systemIdentity = await _commonService.GetNextId(typeof(Customer));
                //    code = Common.Common.GenerateCodeFromId(systemIdentity, 3);
                //}
                category.Change(mesage);
                await _categoryService.ChangeToDb(category);

                //await _categoryRepository.Change(category);
                ICommandResult result = new CommandResult()
                {
                    Message  = "",
                    ObjectId = category.Id,
                    Status   = CommandResult.StatusEnum.Sucess
                };
                return(result);
            }
            catch (Exception e)
            {
                e.Data["Param"] = mesage;
                ICommandResult result = new CommandResult()
                {
                    Message = e.Message,
                    Status  = CommandResult.StatusEnum.Fail
                };
                return(result);
            }
        }
Пример #10
0
 /// <summary>
 /// Default ctor
 /// </summary>
 public Register(int index, RCategory category, RType type)
 {
     this.index    = index;
     this.category = category;
     this.type     = type;
 }
Пример #11
0
        /// <summary>
        /// Allocate a register for the given type.
        /// </summary>
        protected override RegisterSpec Allocate(TypeReference type, bool forceObject, RCategory category, object parameter)
        {
            var isWide = !forceObject && type.IsWide();

            if (isWide)
            {
                var pair = body.AllocateWideRegister(category);
                switch (category)
                {
                case RCategory.Temp:
                    return(new RegisterSpec(pair.Item1, pair.Item2, type));

                case RCategory.Variable:
                case RCategory.VariablePreventOptimization:
                case RCategory.TempVariable:
                    return(new VariableRegisterSpec(pair.Item1, pair.Item2, type, (AstVariable)parameter));

                case RCategory.Argument:
                    return(new ArgumentRegisterSpec(pair.Item1, pair.Item2, type, ParameterWrapper.Wrap(parameter)));

                default:
                    throw new ArgumentException("Unknown category " + category);
                }
            }
            var isPrimitive = !forceObject && (type is PrimitiveType);
            var register    = body.AllocateRegister(category, isPrimitive ? RType.Value : RType.Object);

            switch (category)
            {
            case RCategory.Temp:
                return(new RegisterSpec(register, null, type));

            case RCategory.Variable:
            case RCategory.VariablePreventOptimization:
            case RCategory.TempVariable:
                return(new VariableRegisterSpec(register, null, type, (AstVariable)parameter));

            case RCategory.Argument:
                return(new ArgumentRegisterSpec(register, null, type, ParameterWrapper.Wrap(parameter)));

            default:
                throw new ArgumentException("Unknown category " + category);
            }
        }
Пример #12
0
 /// <summary>
 /// Allocate a register for the given type.
 /// </summary>
 protected abstract RegisterSpec Allocate(TypeReference type, bool forceObject, RCategory category, object parameter);
Пример #13
0
 /// <summary>
 /// Allocate a register for the given type.
 /// </summary>
 protected override RegisterSpec Allocate(TypeReference type, bool forceObject, RCategory category, object parameter)
 {
     var isWide = !forceObject && type.IsWide();
     if (isWide)
     {
         var pair = body.AllocateWideRegister(category);
         switch (category)
         {
             case RCategory.Temp:
                 return new RegisterSpec(pair.Item1, pair.Item2, type);
             case RCategory.Variable:
                 return new VariableRegisterSpec(pair.Item1, pair.Item2, type, (AstVariable)parameter);
             case RCategory.Argument:
                 return new ArgumentRegisterSpec(pair.Item1, pair.Item2, type, ParameterWrapper.Wrap(parameter));
             default:
                 throw new ArgumentException("Unknown category " + category);
         }
     }
     var isPrimitive = !forceObject && (type is PrimitiveType);
     var register = body.AllocateRegister(category, isPrimitive ? RType.Value : RType.Object);
     switch (category)
     {
         case RCategory.Temp:
             return new RegisterSpec(register, null, type);
         case RCategory.Variable:
             return new VariableRegisterSpec(register, null, type, (AstVariable) parameter);
         case RCategory.Argument:
             return new ArgumentRegisterSpec(register, null, type, ParameterWrapper.Wrap(parameter));
         default:
             throw new ArgumentException("Unknown category " + category);
     }
 }
Пример #14
0
 /// <summary>
 /// Allocate a register for the given type.
 /// </summary>
 protected abstract RegisterSpec Allocate(TypeReference type, bool forceObject, RCategory category, object parameter);