public void UpsertTimeSheetEntry(Model.DTO.RequestDTO updatedRequest, int UserId, DateTime startDate, DateTime?endDate = null)
        {
            DayType dayType = updatedRequest.RequestType == Model.DTO.RequestType.Vacation
                ? DayType.Vacation
                : DayType.TimeConsumption;

            var existingTimeSheets = timeSheetsAPIService.GetTimeSheets(new TimeSheetSearchRequest
            {
                UserId = updatedRequest.UserId,
                Month  = startDate.Month,
                Year   = startDate.Year,
                Day    = startDate.Day
            });

            TimeSheetInsertRequest request;

            if (existingTimeSheets.Count > 0)
            {
                var existingTimeSheet = existingTimeSheets[0];
                request = mapper.Map <TimeSheetInsertRequest>(existingTimeSheet);
            }
            else
            {
                request = new TimeSheetInsertRequest
                {
                    UserId = UserId,
                };
            }

            request.DayType = dayType;
            request.Status  = Model.DTO.Status.Closed;

            if (dayType == DayType.TimeConsumption)
            {
                request.EntryDate = startDate.Date;
                request.StartTime = startDate;
                request.EndTime   = endDate;
            }
            else if (dayType == DayType.Vacation)
            {
                request.EntryDate = startDate;
            }

            if (existingTimeSheets.Count > 0)
            {
                timeSheetsAPIService.PutTimeSheet(request.TimeSheetId, request);
            }
            else
            {
                timeSheetsAPIService.PostTimeSheet(request);
            }
        }
        public Model.DTO.TimeSheetDTO PostTimeSheet(TimeSheetInsertRequest TimeSheet)
        {
            var newTimeSheet = _mapper.Map <TimeSheet>(TimeSheet);

            if (newTimeSheet.EntryDate == DateTime.MinValue)
            {
                newTimeSheet.EntryDate = DateTime.Now;
            }

            _context.TimeSheets.Add(newTimeSheet);
            _context.SaveChanges();

            return(_mapper.Map <Model.DTO.TimeSheetDTO>(newTimeSheet));
        }
Beispiel #3
0
        public ActionResult <Model.DTO.TimeSheetDTO> PutTimeSheet(int id, TimeSheetInsertRequest TimeSheet)
        {
            if (id != TimeSheet.TimeSheetId)
            {
                return(BadRequest());
            }

            if (!_TimeSheetsService.TimeSheetExists(id))
            {
                return(NotFound());
            }

            return(_TimeSheetsService.PutTimeSheet(id, TimeSheet));
        }
Beispiel #4
0
        public ActionResult <Model.DTO.TimeSheetDTO> PostTimeSheet(TimeSheetInsertRequest TimeSheet)
        {
            var newTimeSheet = _TimeSheetsService.PostTimeSheet(TimeSheet);

            return(CreatedAtAction(nameof(GetTimeSheet), new { id = newTimeSheet.TimeSheetId }, newTimeSheet));
        }
        public Model.DTO.TimeSheetDTO PutTimeSheet(int id, TimeSheetInsertRequest TimeSheet)
        {
            var existingTimeSheet = _context.TimeSheets.Find(id);

            if (existingTimeSheet == null)
            {
                return(null);
            }

            var currentUser   = usersService.GetCurrentUser();
            int currentUserId = currentUser.UserId;

            if (currentUser.Role.RoleName == "User")
            {
                TimeSheet.UserId = currentUserId;
            }

            if ((TimeSheet.StartTime.HasValue != existingTimeSheet.StartTime.HasValue) ||
                (TimeSheet.StartTime.HasValue && existingTimeSheet.StartTime.HasValue &&
                 TimeSheet.StartTime.Value.TimeOfDay != existingTimeSheet.StartTime.Value.TimeOfDay))
            {
                auditFilesService.PostAuditFile(new AuditFileInsertRequest
                {
                    ChangedByUserId = currentUserId,
                    Field           = Model.DTO.TimeSheetField.StartTime,
                    TimeSheetId     = id,
                    OldValue        = existingTimeSheet.StartTime,
                    NewValue        = TimeSheet.StartTime
                });
            }

            if ((TimeSheet.EndTime.HasValue != existingTimeSheet.EndTime.HasValue) ||
                (TimeSheet.EndTime.HasValue && existingTimeSheet.EndTime.HasValue &&
                 TimeSheet.EndTime.Value.TimeOfDay != existingTimeSheet.EndTime.Value.TimeOfDay))
            {
                auditFilesService.PostAuditFile(new AuditFileInsertRequest
                {
                    ChangedByUserId = currentUserId,
                    Field           = Model.DTO.TimeSheetField.EndTime,
                    TimeSheetId     = id,
                    OldValue        = existingTimeSheet.EndTime,
                    NewValue        = TimeSheet.EndTime
                });
            }
            if ((TimeSheet.BreakTime.HasValue != existingTimeSheet.BreakTime.HasValue) ||
                (TimeSheet.BreakTime.HasValue && existingTimeSheet.BreakTime.HasValue &&
                 TimeSheet.BreakTime.Value.TimeOfDay != existingTimeSheet.BreakTime.Value.TimeOfDay))
            {
                auditFilesService.PostAuditFile(new AuditFileInsertRequest
                {
                    ChangedByUserId = currentUserId,
                    Field           = Model.DTO.TimeSheetField.BreakTime,
                    TimeSheetId     = id,
                    OldValue        = existingTimeSheet.BreakTime,
                    NewValue        = TimeSheet.BreakTime
                });
            }

            _mapper.Map(TimeSheet, existingTimeSheet);
            _context.SaveChanges();

            return(_mapper.Map <Model.DTO.TimeSheetDTO>(existingTimeSheet));
        }