Ejemplo n.º 1
0
        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
            });
        }
Ejemplo n.º 3
0
        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
            });
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }