private static void validateConcurrencyStamp(CalendarEntryDTO entryDTO, CalendarEntry entry) { if (entry.ConcurrencyStamp.Length != entryDTO.ConcurrencyStamp.Length || entry.ConcurrencyStamp.Any(x => !entryDTO.ConcurrencyStamp.Contains(x))) { throw new ValuesChangedByAnotherUserException(); } }
public async Task <IActionResult> DeleteCalendarEntry([FromBody] CalendarEntryDTO calendarEntry) { try { var loggedUser = await _userManager.GetUserAsync(User); await _calendarService.DeleteCalendarEntry(loggedUser.Id, loggedUser.EmployeeType, calendarEntry); return(Ok(new { Id = calendarEntry.Id })); } catch (Exception ex) { if (ex is ArgumentException || ex is AdminRoleRequiredException || ex is ValuesChangedByAnotherUserException) { return(BadRequest(new Exception(ex.Message))); } throw; } }
public async Task <CalendarEntryDTO> AddUpdateCalendarEntry(string loggedUserId, EmployeeTypeEnum loggedUserType, CalendarEntryDTO entryDTO) { if (entryDTO.EmployeeId != loggedUserId && loggedUserType == EmployeeTypeEnum.User) { throw new AdminRoleRequiredException(); } if (entryDTO.StartDate >= entryDTO.EndDate) { throw new ArgumentException("End Date must be after Start Date"); } CalendarEntry entry = entryDTO.IsNew ? await addCalendarEntry(loggedUserType, entryDTO) : await updateCalendarEntry(loggedUserId, loggedUserType, entryDTO); await _context.SaveChangesAsync(); return(DtoMapper.MapCalendarEntryToDTO(entry)); }
public async Task DeleteCalendarEntry(string loggedUserId, EmployeeTypeEnum loggedUserType, CalendarEntryDTO entryDTO) { var entry = await _context.CalendarEntries.FindAsync(entryDTO.Id); if (entry == null) { return; } if (entry.EmployeeId != loggedUserId && loggedUserType == EmployeeTypeEnum.User) { throw new AdminRoleRequiredException(); } validateConcurrencyStamp(entryDTO, entry); _context.CalendarEntries.Remove(entry); await _context.SaveChangesAsync(); }
private async Task <CalendarEntry> updateCalendarEntry(string loggedUserId, EmployeeTypeEnum loggedUserType, CalendarEntryDTO entryDTO) { var entry = await _context.CalendarEntries.FindAsync(entryDTO.Id); if (entry == null) { throw new ArgumentException("Entry was deleted by someone else."); } validateConcurrencyStamp(entryDTO, entry); entry.StartDate = entryDTO.StartDate; entry.EndDate = entryDTO.EndDate; entry.VacationType = entryDTO.VacationType; entry.EmployeeId = entryDTO.EmployeeId; return(entry); }
private async Task <CalendarEntry> addCalendarEntry(EmployeeTypeEnum loggedUserType, CalendarEntryDTO entryDTO) { var entry = new CalendarEntry { StartDate = entryDTO.StartDate, EndDate = entryDTO.EndDate, VacationType = entryDTO.VacationType, EmployeeId = entryDTO.EmployeeId }; _context.CalendarEntries.Add(entry); return(entry); }