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)); } }
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); }
private static bool DatepickerConversionModelValid(DatePickerConversion datePickerConversion) { return(datePickerConversion.SelectedDates.Count > 0 && datePickerConversion.DatepickerUuid != Guid.Empty); }