Example #1
0
        public async Task <ActionResult> Convert([FromBody] DatePickerConversion datepickerConverter)
        {
            try
            {
                UserHelper requestingUser = _controllerHelper.GetRequestingUser(this);
                await _datepickerLogic.ConvertDatepicker(datepickerConverter, requestingUser);

                return(Ok());
            }
            catch (UnauthorizedAccessException)
            {
                return(Unauthorized());
            }
            catch (UnprocessableException)
            {
                return(UnprocessableEntity());
            }
            catch (NoNullAllowedException)
            {
                return(StatusCode(StatusCodes.Status304NotModified));
            }
            catch (Exception e)
            {
                _logLogic.Log(e);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Example #2
0
        public async Task ConvertDatepicker(DatePickerConversion datePickerConversion, UserHelper requestingUser)
        {
            if (!DatepickerConversionModelValid(datePickerConversion))
            {
                throw new UnprocessableException();
            }

            DatepickerDto dbDatepicker = await _datepickerDal.Find(datePickerConversion.DatepickerUuid);

            if (dbDatepicker == null)
            {
                throw new NoNullAllowedException();
            }

            if (dbDatepicker.AuthorUuid != requestingUser.Uuid)
            {
                throw new UnauthorizedAccessException();
            }

            bool datesAreInDatePicker = datePickerConversion.SelectedDates
                                        .TrueForAll(dateUuid => dbDatepicker.Dates
                                                    .Exists(dbDate => dbDate.Uuid == dateUuid));

            if (!datesAreInDatePicker)
            {
                throw new UnprocessableException();
            }

            var datepickerRabbitMq = _mapper.Map <DatepickerRabbitMq>(dbDatepicker);

            datepickerRabbitMq.EventSteps    = _mapper.Map <List <EventStepRabbitMq> >(datePickerConversion.EventSteps);
            datepickerRabbitMq.SelectedDates = datePickerConversion.SelectedDates;
            datepickerRabbitMq.Dates
            .RemoveAll(d => !datePickerConversion.SelectedDates
                       .Contains(d.Uuid));

            _publisher.Publish(datepickerRabbitMq, RabbitMqRouting.ConvertDatepicker, RabbitMqExchange.EventExchange);
            await _datepickerDal.Delete(datePickerConversion.DatepickerUuid);
        }
Example #3
0
 private static bool DatepickerConversionModelValid(DatePickerConversion datePickerConversion)
 {
     return(datePickerConversion.SelectedDates.Count > 0 &&
            datePickerConversion.DatepickerUuid != Guid.Empty);
 }