예제 #1
0
        public virtual ActionResult Push()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = HttpContext.Request.Params
            });

            var commands = dispatcher.Query(new CreateByTypeQuery.AsCommands()
            {
                IncTypes          = parameter.Type,
                ModelState        = ModelState,
                ControllerContext = ControllerContext,
                IsComposite       = parameter.IsCompositeArray
            });

            var composite = new CommandComposite(commands);

            return(TryPush(commandComposite => dispatcher.Query(new MVDExecute(HttpContext)
            {
                Instance = composite
            }), composite, setting => setting.SuccessResult = () =>
            {
                var data = commands.Length == 1 ? commands[0].Result : commands.Select(r => r.Result);
                return IncodingResult.Success(data);
            }));
        }
예제 #2
0
        public ActionResult Del(string name)
        {
            int index = ads.FindIndex(r => r.Name == name);

            ads.RemoveAt(index);
            return(IncodingResult.Success());
        }
        public virtual ActionResult Composite(string incTypes)
        {
            if (string.IsNullOrWhiteSpace(incTypes))
            {
                throw new ArgumentNullException("incTypes");
            }

            var  splits  = incTypes.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            bool isGroup = splits.Count() == 1;

            List <CommandBase> commands;

            if (isGroup)
            {
                string firstType = splits.First();
                commands = ((IEnumerable <CommandBase>)Create(firstType, string.Empty, true)).ToList();
            }
            else
            {
                commands = splits.Select(r => (CommandBase)Create(r, string.Empty))
                           .ToList();
            }

            return(TryPush(composite =>
            {
                foreach (var commandBase in commands)
                {
                    composite.Quote(commandBase);
                }
            }, setting => setting.SuccessResult = () => IncodingResult.Success(commands.Select(r => r.Result))));
        }
        public ActionResult FetchSub(string root)
        {
            var vms = new Dictionary <string, List <KeyValueVm> >
            {
                {
                    "Cars", new List <KeyValueVm>
                    {
                        new KeyValueVm("Coupe"),
                        new KeyValueVm("Jeep"),
                        new KeyValueVm("Sedan"),
                    }
                },
                {
                    "Houses", new List <KeyValueVm>
                    {
                        new KeyValueVm("Rooms"),
                        new KeyValueVm("Apartments"),
                    }
                },
                {
                    "Electronics", new List <KeyValueVm>
                    {
                        new KeyValueVm("Phones"),
                        new KeyValueVm("Computers"),
                    }
                },
            };

            return(IncodingResult.Success(vms[root]));
        }
예제 #5
0
 public ActionResult Add(AddAdCommand command)
 {
     ads.Add(new AdVm
     {
         Name = command.Name,
         Root = command.Root,
         Sub  = command.Sub
     });
     return(IncodingResult.Success());
 }
예제 #6
0
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            var urlHelper = new UrlHelper(filterContext.RequestContext);

            string url = urlHelper.Action("SignIn", "Account");

            filterContext.Result = filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()
                                           ? (ActionResult)IncodingResult.RedirectTo(url)
                                           : new RedirectResult(url);
        }
        public ActionResult FetchRoot()
        {
            var vms = new List <KeyValueVm>
            {
                new KeyValueVm("Cars"),
                new KeyValueVm("Houses"),
                new KeyValueVm("Electronics"),
            };

            return(IncodingResult.Success(vms));
        }
예제 #8
0
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            var    urlHelper = new UrlHelper(filterContext.RequestContext);
            string url       = urlHelper.Action("Index", "Browsio", new { area = "" });

            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {
                filterContext.Result = IncodingResult.RedirectTo(url);
                return;
            }
            filterContext.Result = new RedirectResult(url);
        }
예제 #9
0
        public virtual ActionResult Validate()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = HttpContext.Request.Params
            });
            // ReSharper disable once UnusedVariable
            var instance = dispatcher.Query(new CreateByTypeQuery()
            {
                Type = parameter.Type, ControllerContext = this.ControllerContext, ModelState = ModelState
            });

            return(ModelState.IsValid ? IncodingResult.Success() : IncodingResult.Error(ModelState));
        }
        public virtual ActionResult Query(string incType, string incGeneric, bool?incValidate)
        {
            var query = Create(incType, incGeneric);

            if (incValidate.GetValueOrDefault(false) && !ModelState.IsValid)
            {
                return(IncodingResult.Error(ModelState));
            }

            var result = dispatcher.GetType()
                         .GetMethod("Query")
                         .MakeGenericMethod(query.GetType().BaseType.With(r => r.GetGenericArguments()[0]))
                         .Invoke(dispatcher, new[] { query, null });

            return(IncJson(result));
        }
예제 #11
0
        public ActionResult SignIn(GetUserByCredentialQuery query)
        {
            var user = this.dispatcher.Query(query);

            if (user == null)
            {
                ModelState.AddModelError("Server", "Invalid login or password");
                return(IncodingResult.Error(ModelState));
            }

            if (!user.Activated)
            {
                ModelState.AddModelError("Server", "Your account not confirmed");
                return(IncodingResult.Error(ModelState));
            }

            IoCFactory.Instance.TryResolve <IFormAuthentication>().SignIn(user.Id.ToString(), true);
            return(IncRedirectToAction("Index", "Browsio"));
        }
예제 #12
0
        public void ProcessRequest(HttpContext context)
        {
            var dispatcher = new DefaultDispatcher();
            var parameter  = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = context.Request.Params
            });

            context.Response.ContentType     = "application/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            var instanceForQuery = dispatcher.Query(new CreateByTypeQuery()
            {
                Type = parameter.Type
            });

            context.Response.Write(IncodingResult.Success(dispatcher.Query(new MVDExecute(new HttpContextWrapper(context))
            {
                Instance = new CommandComposite((IMessage)instanceForQuery)
            })).ToJsonString());
        }
예제 #13
0
        public void ProcessRequest(HttpContext context)
        {
            var dispatcher = new DefaultDispatcher();
            var parameter  = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = context.Request.Params
            });

            var commands = dispatcher.Query(new CreateByTypeQuery.AsCommands()
            {
                IncTypes    = parameter.Type,
                IsComposite = parameter.IsCompositeArray
            });

            context.Response.ContentType     = "application/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            dispatcher.Push(new CommandComposite(commands));
            var data = commands.Length == 1 ? commands[0].Result : commands.Select(r => r.Result);

            context.Response.Write(IncodingResult.Success(data).ToJsonString());
        }
예제 #14
0
        public virtual ActionResult Query()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = HttpContext.Request.Params
            });
            var query = dispatcher.Query(new CreateByTypeQuery()
            {
                Type = parameter.Type, ControllerContext = this.ControllerContext, ModelState = ModelState
            });

            if (parameter.IsValidate && !ModelState.IsValid)
            {
                return(IncodingResult.Error(ModelState));
            }

            var composite = new CommandComposite((IMessage)query);

            return(TryPush(commandComposite => dispatcher.Query(new MVDExecute(HttpContext)
            {
                Instance = composite
            }), composite, setting => setting.SuccessResult = () => IncodingResult.Success(composite.Parts[0].Result), isAjax: true));
        }
예제 #15
0
        public virtual ActionResult Render()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = HttpContext.Request.Params
            });
            object model = null;

            if (!string.IsNullOrWhiteSpace(parameter.Type))
            {
                var instance = dispatcher.Query(new CreateByTypeQuery()
                {
                    Type = parameter.Type,
                    ControllerContext = ControllerContext,
                    ModelState        = ModelState,
                    IsModel           = parameter.IsModel
                });

                if (parameter.IsValidate && !ModelState.IsValid)
                {
                    return(IncodingResult.Error(ModelState));
                }

                model = parameter.IsModel ? instance : dispatcher.Query(new MVDExecute(HttpContext)
                {
                    Instance = new CommandComposite((IMessage)instance)
                });
            }

            ModelState.Clear();

            var isAjaxRequest = HttpContext.Request.IsAjaxRequest();

            return(isAjaxRequest
                           ? (ActionResult)IncPartialView(parameter.View, model)
                           : Content(RenderToString(parameter.View, model)));
        }
        public virtual ActionResult Push(string incType, string incGeneric)
        {
            var command = (CommandBase)Create(incType, incGeneric);

            return(TryPush(composite => composite.Quote(command), setting => { setting.SuccessResult = () => IncodingResult.Success(command.Result); }));
        }
예제 #17
0
 public ActionResult Fetch()
 {
     return(IncodingResult.Success(data.Select(r => r.Value)
                                   .ToList()));
 }
예제 #18
0
 public ActionResult Delete(string id)
 {
     data.Remove(id);
     return(IncodingResult.Success());
 }
예제 #19
0
 public ActionResult RemoveAll()
 {
     ads = new List <AdVm>();
     return(IncodingResult.Success());
 }
예제 #20
0
 public ActionResult Fetch(SearchAdQuery query)
 {
     return(IncodingResult.Success(ads.Where(r => string.IsNullOrWhiteSpace(query.Root) || r.Root == query.Root)
                                   .Where(r => string.IsNullOrWhiteSpace(query.Sub) || r.Sub == query.Sub)));
 }