public async Task <GenericResponseDTO <int> > UpdateTime(TimeEntryDTO data) { var results = new GenericResponseDTO <int>() { Success = true }; var currentUserId = authHelper.GetCurrentUserId(User); var currentTimeEntry = await database .TimeEntries .AsQueryable() .SingleOrDefaultAsync(x => x.Id == data.Id && x.User.Id == currentUserId); if (currentTimeEntry == null) { results.Success = false; results.Message = "Could not find the specified time entry"; return(results); } currentTimeEntry.Day = data.Day; currentTimeEntry.Length = data.Length; currentTimeEntry.Notes = data.Notes; currentTimeEntry.Day = data.Day; currentTimeEntry.LastModified = DateTime.UtcNow; await database.SaveChangesAsync(); results.Data = currentTimeEntry.Id; return(results); }
public static TimeCardEntryModel ToModel(this TimeEntryDTO dto) { if (dto == null) { return(null); } return(new TimeCardEntryModel { Date = dto.StartTime.Date, StartTime = dto.StartTime.TimeOfDay.ToString(), EndTime = dto.EndTime.TimeOfDay.ToString(), Task = dto.Task }); }
public async Task <GenericResponseDTO <TimeEntryDTO> > StopTimer(int timerId) { Timer timer = await database.Timers .AsQueryable() .Where(t => t.User.Id == authHelper.GetCurrentUserId(User)) .Include(t => t.Project) .FirstOrDefaultAsync(t => t.Id == timerId); DateTime timeEntryCreationTime = DateTime.UtcNow; if (timer == null) { return(new GenericResponseDTO <TimeEntryDTO>() { Success = false, Message = "Could not find the timer" }); } TimeEntry timeEntry = (await database.TimeEntries .AddAsync(new TimeEntry { CreatedTime = timeEntryCreationTime, Notes = timer.Notes, Project = timer.Project, LastModified = timeEntryCreationTime, User = await authHelper.GetCurrentUser(User, database), Length = (timeEntryCreationTime - timer.StartTime).TotalMinutes, Day = timeEntryCreationTime })).Entity; TimeEntryDTO returnData = new TimeEntryDTO { Id = timeEntry.Id, Length = timeEntry.Length, Notes = timeEntry.Notes, ProjectId = timer.Project.Id, Day = timeEntry.Day }; database.Timers.Remove(timer); await database.SaveChangesAsync(); return(new GenericResponseDTO <TimeEntryDTO> { Success = true, Data = returnData }); }
public async Task DeleteTimeEntry() { var projectResults = await projectController.CreateProject(new ProjectCreateDTO() { ClientName = "Test Client", Description = "Test Desciption", ProjectName = "Best project 10/10", Tags = new List <string>() { "AngryCarrot" } }); database.ChangeTracker.Clear(); var projectId = projectResults.Data; var testTimeEntry = new TimeEntryDTO() { Day = new DateTime(1999, 6, 18), Length = 5, Notes = "Happy Birthday", ProjectId = projectId }; // Create time var createTimeResults = await timeEntryController.CreateTime(testTimeEntry); Assert.IsTrue(createTimeResults.Success); Assert.IsTrue(createTimeResults.Data > 0); // Get the time entry var getCreatedTimeResults = await timeEntryController.Get(createTimeResults.Data); Assert.AreEqual(getCreatedTimeResults.Success, true); var results = await timeEntryController.DeleteTimeEntry(createTimeResults.Data); Assert.IsTrue(results.Success); getCreatedTimeResults = await timeEntryController.Get(createTimeResults.Data); Assert.IsFalse(getCreatedTimeResults.Success); }
public List <TimeEntryDTO> Search(string userName, int projectId, bool onlyMine, Nullable <DateTime> startDate, Nullable <DateTime> endDate, int teamId, string activity) { ObjectResult <p1p.Data.TimeEntry> resultTimeEntries; List <TimeEntryDTO> dtoTimeEntries = new List <TimeEntryDTO>(); using (P1PContext ctx = new P1PContext()) { resultTimeEntries = ctx.SearchTimeEntries(userName, projectId, onlyMine, startDate, endDate, teamId, activity); foreach (TimeEntry te in resultTimeEntries) { TimeEntryDTO timeEntry = new TimeEntryDTO() { Id = te.Id, ProjectId = te.ProjectId, UserId = te.UserId, StartTime = te.StartTime, EndTime = te.EndTime, Elapsed = te.Elapsed, Activity = te.Activity, Note = te.Note, IsTimeOff = te.IsTimeOff, InsertDate = te.InsertDate }; //TODO This is temporarily being done - needs refactoring since the whole project object is not being constructed if (te.Project != null) { timeEntry.Project = new ProjectDTO() { Id = te.Project.Id, Name = te.Project.Name }; } dtoTimeEntries.Add(timeEntry); } } return(dtoTimeEntries); }
public async Task <GenericResponseDTO <int> > CreateTime(TimeEntryDTO data) { var results = new GenericResponseDTO <int>() { Success = true }; var newTimeEntry = new TimeEntry() { CreatedTime = DateTime.UtcNow, Day = data.Day, LastModified = DateTime.UtcNow, Length = data.Length, Notes = data.Notes, Project = await database.Projects.AsQueryable().SingleAsync(x => x.Id == data.ProjectId), User = await authHelper.GetCurrentUser(User, database) }; database.TimeEntries.Add(newTimeEntry); await database.SaveChangesAsync(); results.Data = newTimeEntry.Id; return(results); }
public async Task TestTimeEntry() { var projectResults = await projectController.CreateProject(new ProjectCreateDTO() { ClientName = "Test Client", Description = "Test Desciption", ProjectName = "Best project 10/10", Tags = new List <string>() { "AngryCarrot" } }); database.ChangeTracker.Clear(); var projectId = projectResults.Data; var testTimeEntry = new TimeEntryDTO() { Day = new DateTime(1999, 6, 18), Length = 5, Notes = "Happy Birthday", ProjectId = projectId }; // Create time var createTimeResults = await timeEntryController.CreateTime(testTimeEntry); Assert.IsTrue(createTimeResults.Success); Assert.IsTrue(createTimeResults.Data > 0); // Get the time entry var getCreatedTimeResults = await timeEntryController.Get(createTimeResults.Data); Assert.AreEqual(getCreatedTimeResults.Success, true); Assert.AreEqual(testTimeEntry.Day, getCreatedTimeResults.Data.Day); Assert.AreEqual(testTimeEntry.Length, getCreatedTimeResults.Data.Length); Assert.AreEqual(testTimeEntry.Notes, getCreatedTimeResults.Data.Notes); Assert.IsTrue(DateTime.UtcNow > getCreatedTimeResults.Data.CreatedTime); var updatedTimeEntry = new TimeEntryDTO() { Id = createTimeResults.Data, Day = new DateTime(1989, 10, 24), Notes = "pewdiepie", Length = 5 }; // Update time var updateTimeResuls = await timeEntryController.UpdateTime(updatedTimeEntry); // Get the time entry var getUpdatedTimeResults = await timeEntryController.Get(updateTimeResuls.Data); Assert.AreEqual(getUpdatedTimeResults.Success, true); Assert.AreEqual(getUpdatedTimeResults.Data.Id, getCreatedTimeResults.Data.Id); Assert.AreEqual(updatedTimeEntry.Day, getUpdatedTimeResults.Data.Day); Assert.AreEqual(updatedTimeEntry.Length, getUpdatedTimeResults.Data.Length); Assert.AreEqual(updatedTimeEntry.Notes, getUpdatedTimeResults.Data.Notes); Assert.AreEqual(getUpdatedTimeResults.Data.CreatedTime, getCreatedTimeResults.Data.CreatedTime); Assert.IsTrue(getCreatedTimeResults.Data.LastModified < getUpdatedTimeResults.Data.LastModified); // Search for projects var singleDayNoResults = await timeEntryController.GetInDateRange(new DateRangeDTO() { StartDate = DateTime.Now, EndDate = DateTime.Now }); Assert.AreEqual(singleDayNoResults.Success, true); Assert.AreEqual(singleDayNoResults.Data.Count, 0); var singleDayResults = await timeEntryController.GetInDateRange(new DateRangeDTO() { StartDate = updatedTimeEntry.Day, EndDate = updatedTimeEntry.Day }); Assert.AreEqual(singleDayResults.Success, true); Assert.AreEqual(singleDayResults.Data.Count, 1); var multipleDayResults = await timeEntryController.GetInDateRange(new DateRangeDTO() { StartDate = updatedTimeEntry.Day.AddDays(-10), EndDate = updatedTimeEntry.Day.AddDays(123) }); Assert.AreEqual(multipleDayResults.Success, true); Assert.AreEqual(multipleDayResults.Data.Count, 1); }