Exemplo n.º 1
0
        /// <summary>
        /// Inicia uma nova instância da classe <see cref="GestUAB.Modules.ColaboradorModule"/> class.
        /// </summary>
        public ColaboradorModule()
            : base("/colaboradores")
        {
            this.Get["/"] = _ =>
            {
                var all = ColaboradorManager.GetAll();
                return View["index", all];
            };

            this.Get["/{Id}"] = x =>
            {
                Guid id = Guid.Parse(x.Id);
                var m = ColaboradorManager.Get(id);
                if (m == null)
                {
                    return new NotFoundResponse();
                }

                return View["show", m];
            };

            this.Get["/new"] = x =>
            {
                return View["new", new Colaborador()];
            };

            this.Post["/new"] = x =>
            {
                var colaborador = this.Bind<Colaborador>();
                var result = new ColaboradorValidator().Validate(colaborador);
                if (!result.IsValid)
                {
                    return Response.AsJson(result.Errors)
                        .WithStatusCode(HttpStatusCode.BadRequest)
                            .WithHeader("X-Status-Reason", "A validação falhou.".ToHtmlEncode());
                }

                ColaboradorManager.Insert(colaborador);
                return Response.AsJson("Redirecionando para a página do colaborador", HttpStatusCode.Created)
                    .WithHeader("Location", string.Format("/colaboradores/{0}", colaborador.Id));
            };

            this.Get["/edit/{Id}"] = x =>
            {
                Guid id = Guid.Parse(x.Id);
                var colaborador = ColaboradorManager.Get(id);
                if (colaborador == null)
                {
                    return new NotFoundResponse();
                }

                return View["edit", colaborador];
            };

            this.Put["/edit/{Id}"] = x =>
            {
                var colaborador = this.Bind<Colaborador>();
                var result = new ColaboradorValidator().Validate(colaborador, ruleSet: "Update");
                if (!result.IsValid)
                {
                    return Response.AsJson(result.Errors, HttpStatusCode.BadRequest)
                        .WithHeader("X-Status-Reason", "A validação falhou.".ToHtmlEncode());
                }

                if (ColaboradorManager.Update(colaborador))
                {
                    return Response.AsJson("Redirecionando para a página do colaborador", HttpStatusCode.Accepted)
                        .WithHeader("Location", string.Format("/colaboradores/{0}", colaborador.Id));
                }

                return Response.AsJson("Ocorreu um erro ao atualizar o colaborador.")
                    .WithHeader("X-Status-Reason", "Ocorreu um erro ao atualizar o colaborador.");
            };

            this.Delete["/delete/{Id}"] = x =>
            {
                Guid id = Guid.Parse(x.Id);

                if (ColaboradorManager.Delete(id))
                {
                    return Response.AsJson("Redirecionando para a página a lista de colaboradores.\t", HttpStatusCode.NoContent)
                        .WithHeader("Location", string.Format("/colaboradores"));
                }

                return Response.AsJson("Ocorreu um erro ao excluir o colaborador.")
                    .WithHeader("X-Status-Reason", "Ocorreu um erro ao excluir o colaborador.");
            };
        }
Exemplo n.º 2
0
 public void SetupMocks()
 {
     _colaboradorValidator = new ColaboradorValidator();
 }