Example #1
0
        public Task Register(PunchViewModel punchViewModel)
        {
            var punch = new Punch(punchViewModel);

            punch.DateTime = DateTime.UtcNow;

            var lastPunchToday = _punchRepository.GetLastPunchForToday(punchViewModel.EmployeeId).Result;

            if (lastPunchToday == null)
            {
                punch.PunchType = PunchType.PunchIn;
            }
            else
            {
                punch.PunchType = lastPunchToday.PunchType == PunchType.PunchIn ? PunchType.PunchOut : PunchType.PunchIn;
            }

            var validator = new PunchValidator();
            var result    = validator.Validate(punch);

            if (!result.IsValid)
            {
                var errorsMsg = string.Join(',', result.Errors.Select(x => x.ErrorMessage));
                throw new ValidationException(errorsMsg);
            }

            return(_punchRepository.Save(punch));
        }