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)); }