public async Task <ActionResult <TimesheetDTO> > PostTimesheet(TimesheetDTO timesheet) { var user = await _userManager.FindByNameAsync(User?.Identity?.Name); if (user != null) { timesheet.UserId = user.Id; } var isTimesheetForValidMonth = !_context.Timesheet.Any(t => t.Date.Year.Equals(timesheet.Date.Year) && t.Date.Month.Equals(timesheet.Date.Month) && t.UserId.Equals(user.Id)); if (!isTimesheetForValidMonth) { return(BadRequest(new { Message = "Timesheet for selected month already exists!" })); } var timesheetObj = DtoToModel.DtoToTimesheet(timesheet); var validStates = States.GetStatesValues(); if (!validStates.Contains(timesheet.State)) { return(BadRequest("Provided status does not exist!")); } await _context.Timesheet.AddAsync(timesheetObj); await _context.SaveChangesAsync(); var dto = ModelToDto.TimesheetToDto(timesheetObj); return(CreatedAtAction("GetTimesheet", new { id = timesheet.Id }, dto)); }
public void TimesheetToDTO_Should_ReturnValidDTO() { var mockTimesheet = CreateMockTimesheet(); var sut = ModelToDto.TimesheetToDto(mockTimesheet); Assert.AreEqual(sut.Id, 1); Assert.AreEqual(sut.Date, _sampleDate); Assert.AreEqual(sut.UserId, _sampleUserId); Assert.AreEqual(sut.Rows.Count(), 2); Assert.AreEqual(sut.Rows.ElementAt(0).Id, 1); Assert.AreEqual(sut.Rows.ElementAt(1).Id, 2); Assert.AreEqual(sut.Rows.ElementAt(0).RateTypeId, 1); Assert.AreEqual(sut.Rows.ElementAt(1).RateTypeId, 2); Assert.AreEqual(sut.Rows.ElementAt(0).TimesheetId, 1); Assert.AreEqual(sut.Rows.ElementAt(1).TimesheetId, 1); Assert.AreEqual(sut.Rows.ElementAt(0).Days.Count(), 2); Assert.AreEqual(sut.Rows.ElementAt(1).Days.Count(), 2); Assert.AreEqual(sut.Rows.ElementAt(0).Days.ElementAt(0).Date, _sampleDate); Assert.AreEqual(sut.Rows.ElementAt(0).Days.ElementAt(1).Date, _sampleDate); Assert.AreEqual(sut.Rows.ElementAt(1).Days.ElementAt(0).Date, _sampleDate); Assert.AreEqual(sut.Rows.ElementAt(1).Days.ElementAt(1).Date, _sampleDate); Assert.AreEqual(sut.Rows.ElementAt(0).Days.ElementAt(0).ReportedHours, 8); Assert.AreEqual(sut.Rows.ElementAt(0).Days.ElementAt(1).ReportedHours, 7); Assert.AreEqual(sut.Rows.ElementAt(1).Days.ElementAt(0).ReportedHours, 8); Assert.AreEqual(sut.Rows.ElementAt(1).Days.ElementAt(1).ReportedHours, 7); }
public async Task <ActionResult <TimesheetDTO> > GetTimesheet(int id) { var timesheet = await _context.Timesheet.FindAsync(id); if (timesheet == null) { return(NotFound()); } var currentUser = await _userManager.FindByNameAsync(User?.Identity?.Name); var isCorrectUser = _context.Timesheet.Any(t => t.Id == id && t.UserId == currentUser.Id); if (!isCorrectUser) { return(Forbid()); } var dto = ModelToDto.TimesheetToDto(timesheet); return(dto); }