Exemplo n.º 1
0
        public TimeEntryModule(IMyContext ctx) : base("/recordTime")
        {
            Post["/{projectid}"] = _ =>
            {
                TimeEntry newEntry  = this.Bind();
                int       projectId = _.projectid; // Need to cast the parameter to int so LINQ knows its working with the correct type
                newEntry.Project          = ctx.Projects.Find(projectId);
                newEntry.RegistrationDate = DateTime.Now;
                ctx.TimeEntries.Add(newEntry);
                ctx.SaveChanges();

                return(Response.AsJson <object>(newEntry));
            };

            Post["/del/{id}"] = x =>
            {
                var entry = new TimeEntry()
                {
                    Id = x.id
                };
                ctx.Entry(entry).State = EntityState.Deleted;

                ctx.SaveChanges();

                return(Response.AsText("Time entry successfully deleted"));
            };
        }
Exemplo n.º 2
0
 public void Update(Article article)
 {
     using (_ctx)
     {
         _ctx.Entry(article).State = EntityState.Modified;
         _ctx.SaveChanges();
     }
 }
Exemplo n.º 3
0
        public DinnerModule(IMyContext ctx) : base("/dinner")
        {
            Get["/"] = x =>
            {
                return(Response.AsJson <object>(ctx.Dinners.ToArray()));
            };

            Post["/"] = _ =>
            {
                Dinner dinner = this.Bind <Dinner>();

                ctx.Dinners.Add(dinner);
                ctx.SaveChanges();

                return(HttpStatusCode.OK);
            };

            Put["/{id:int}"] = parameters =>
            {
                Dinner dinner = this.Bind <Dinner>();

                dinner.Id = parameters.id;
                ctx.Dinners.Attach(dinner);
                ctx.Entry(dinner).State = EntityState.Modified;
                ctx.SaveChanges();

                return(HttpStatusCode.OK);
            };

            Delete["/{id:int}"] = x =>
            {
                var dinner = new Dinner()
                {
                    Id = x.id
                };
                ctx.Entry(dinner).State = EntityState.Deleted;

                ctx.SaveChanges();

                return(HttpStatusCode.OK);
            };
        }
Exemplo n.º 4
0
        public ProjectModule(IMyContext ctx)
            : base("/projects")
        {
            Get["/list"] = parameters =>
            {
                var model = new ResponseBean(ctx.Projects.ToList());
                return(View["ListProjects", model]);
            };

            Get["/create"] = parameters =>
            {
                var clients = new ResponseBean()
                {
                    Clients = ctx.Clients.ToList()
                };
                return(View["CreateProject", clients]);
            };

            Post["/create"] = _ =>
            {
                var message       = "Successfully added project ";
                var createSuccess = "alert-success";
                try
                {
                    string reqString = this.Request.Body.ReadAsString();
                    int    clientId  = getClientIdFromRequest(reqString);
                    var    client    = ctx.Clients.Find(clientId);
                    var    project   = this.Bind <Project>("Client");
                    project.CreationDate = DateTime.Now;
                    project.Client       = client;

                    ctx.Projects.Add(project);
                    ctx.SaveChanges();
                    message += project.Title;
                }
                catch (Exception ex)
                {
                    if (ex is ModelBindingException)
                    {
                        message = "Couldn't bind model. <br>" +
                                  HtmlUtil.FormatExceptionHtml(ex);
                        createSuccess = "alert-warning";
                    }
                    else if (ex is DbUpdateException || ex is RequestExecutionException)
                    {
                        message = "Couldn't complete request to DataBase. <br>" +
                                  HtmlUtil.FormatExceptionHtml(ex);
                        createSuccess = "alert-danger";
                    }
                    else
                    {
                        message = "Something went wrong while creating your project :/<br>" +
                                  HtmlUtil.FormatExceptionHtml(ex);

                        createSuccess = "alert-danger";
                    }
                }
                var model = new ResponseBean()
                {
                    Message       = message,
                    CreateSuccess = createSuccess,
                    Redirect      = true,
                    Clients       = ctx.Clients.ToList()
                };
                return(View["CreateProject", model]);
            };

            Get["/{id}"] = _ =>
            {
                ResponseBean model = new ResponseBean();
                Project      p;
                int          projectId = _.id;
                if ((p = ctx.Projects.Find(projectId)) != null)
                {
                    model.Project = p;
                    model.Client  = p.Client;
                    var   timeEntries = ctx.TimeEntries.Where(t => t.Project.Id == projectId).ToList();
                    float hoursSpent  = timeEntries.Sum(t => t.HoursSpent);
                    model.WorkDone   = timeEntries;
                    model.HoursSpent = hoursSpent;
                    model.Success    = true;  // We need to send a bool, since the SSVE @If can only check on bools
                }
                else
                {
                    model.Message = "Couldn't find project with id " + _.id;
                    model.Success = false;
                }
                return(View["ProjectDetail", model]);
            };

            Post["/del/{id}"] = x =>
            {
                var project = new Project()
                {
                    Id = x.id
                };
                ctx.Entry(project).State = EntityState.Deleted;

                ctx.SaveChanges();

                return(HttpStatusCode.OK);
            };
        }