public HttpResponseMessage Post(Timesheet timesheet) { timesheet.Name = timesheet.Name.ToLowerInvariant(); var response = Request.CreateResponse(HttpStatusCode.Created, timesheet); var repository = _mongoContext.GetCollection<Timesheet>(); repository.Insert(timesheet); // Where is the new timesheet? string uri = Url.Route(null, new { id = timesheet.Id }); response.Headers.Location = new Uri(Request.RequestUri, uri); return response; }
public Timesheet Get(string name, int year, int month) { var repository = _mongoContext.GetCollection<Timesheet>(); var query = Query.And( Query.EQ("Year", year), Query.EQ("Month", month), Query.EQ("Name", name.ToLowerInvariant())); var timesheet = repository.Find(query).SingleOrDefault(); if (timesheet == null) { var days = Enumerable.Range(1, DateTime.DaysInMonth(year, month)) // Days: 1, 2 ... 31 etc. .Select(day => new DateTime(year, month, day)) // Map each day to a date .ToList(); // Load dates into a list var timesheetDays = new List<TimesheetDay>(); days.ForEach( d => timesheetDays.Add(new TimesheetDay { Date = d, IsWeekend = d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday })); timesheet = new Timesheet { Name = name, Year = year, Month = month, WorkingDays = timesheetDays }; } return timesheet; }