예제 #1
0
        private async Task RegistrationMessageHandler(Message msg, CancellationToken cancellationToken)
        {
            Shift shift = null;

            // TODO: here read and convert ShiftModel from msg.Body

            await _shiftsService.TryRegisterShiftAsync(shift);
        }
        public void correct_shift_should_be_added_to_empty_base_and_available()
        {
            var startHour = new DateTime(2021, 1, 23, 7, 0, 0);
            var endHour   = startHour.AddHours(8);

            var newShift = new Shift
            {
                WorkerId = _workerOneIdentifier,
                TimeZone = _workerTimeZone,
                StartUtc = startHour.Add(_workerTimeZone.GetUtcOffset(startHour)),
                EndUtc   = endHour.Add(_workerTimeZone.GetUtcOffset(endHour))
            };

            var insertionStatus = _shiftService.TryRegisterShiftAsync(newShift).Result;

            Assert.IsTrue(insertionStatus.IsSuccess);
            Assert.AreNotEqual(insertionStatus.Value.ShiftId, Guid.Empty);

            // ...

            var registeredShifts = _shiftService
                                   .GetWorkerShiftsAsync(_workerOneIdentifier, DateTime.MinValue, DateTime.MaxValue).Result;

            Assert.IsNotNull(registeredShifts);
            Assert.IsNotEmpty(registeredShifts);
            Assert.AreEqual(1, registeredShifts.Length);
            Assert.AreEqual(registeredShifts[0].ShiftId, insertionStatus.Value.ShiftId);
        }
예제 #3
0
        public async Task <IActionResult> BookShift(ShiftViewModel newShift)
        {
            Shift shift = newShift.AsDomainClass();

            var inserted = await _shiftsService.TryRegisterShiftAsync(shift);

            if (inserted.IsSuccess)
            {
                return(new JsonResult(new ShiftViewModel(inserted.Value)));
            }

            return(ProcessError(inserted));
        }