Beispiel #1
0
        public async Task <IViewComponentResult> InvokeAsync(Guid TurnID, bool IsVeify = false, string ViewName = "Default")
        {
            var fields = _repository.GetListActiveByParent <ExpertField, int>(x => x.ExpertID, _repository.ExpertID)
                         .Include(x => x.SourceType).ThenInclude(x => x.SourceValues).ToList();

            var t = _repository.GetTurn(TurnID);

            var lst = fields.Select(x => new ExpertFieldsViewModel
            {
                ID             = x.ID,
                Title          = x.Title,
                CssClass       = x.CssClass,
                Expert         = x.Expert,
                ExpertID       = x.ExpertID,
                FieldType      = x.FieldType,
                IsActive       = x.IsActive,
                IsDeleted      = x.IsDeleted,
                Name           = x.Name,
                OrderIndex     = x.OrderIndex,
                Placeholder    = x.Placeholder,
                SourceTypeID   = x.SourceTypeID,
                UpdateDateTime = x.UpdateDateTime,
                UserID         = x.UserID,
                Value          = _repository.GetTurnDetailsTitle(t, x.ID, IsVeify) ?? x.Value,
                SourceType     = x.SourceType
            }).ToList();

            var m = new TurnFieldsViewModel {
                Turn = t, ExpertFields = lst, IsVeify = IsVeify
            };

            return(View(ViewName, m));
        }
        public IActionResult VerifyTurn(TurnFieldsViewModel f)
        {
            // حذف موارد قبلی
            _repository.DeleteTurnDetails(f.Turn.ID);

            // اضافه کردن جزییات
            if (f.ExpertFields != null)
            {
                _repository.AddTurnDetails(f.Turn.ID, f.ExpertFields);
            }

            // دریافت فرمول و محاسبه
            {
                var formula = _repository.GetSetting(Settings.Formula);

                formula = Regex.Replace(formula, "\\[([-a-z0-9]+)\\]",
                                        m => _repository.GetTurnDetailsValue(f.Turn.ID, m.Groups[1].Value.ToLower()), RegexOptions.IgnoreCase);

                string func = @"function Func() {" + formula + "}";

                var GetResult = new Jint.Engine()
                                .Execute(func)
                                .GetValue("Func");

                var price = (long)(double)GetResult.Invoke().ToObject();

                f.Turn.Price = price;
            }

            _repository.UpdateTurnPrice(f.Turn.ID, f.Turn.Price);

            return(View(this.GetViewName("VerifyTurn"), f.Turn));
        }