示例#1
0
 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();
     }
 }
示例#2
0
        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;
            }
        }
示例#3
0
        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));
        }
示例#4
0
        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();
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }