private AddOn MapNewAddOn(AddOnCreateDTO newAddOn) { switch (newAddOn.AddOnType) { case (AddOnType.Cruise): return(_mapper.Map <AddOnCreateDTO, Cruise>(newAddOn)); case (AddOnType.Breakfast): return(_mapper.Map <AddOnCreateDTO, Breakfast>(newAddOn)); case (AddOnType.Lunch): return(_mapper.Map <AddOnCreateDTO, Lunch>(newAddOn)); case (AddOnType.Tea): return(_mapper.Map <AddOnCreateDTO, Tea>(newAddOn)); case (AddOnType.Coffee): return(_mapper.Map <AddOnCreateDTO, Coffee>(newAddOn)); case (AddOnType.Juice): return(_mapper.Map <AddOnCreateDTO, Juice>(newAddOn)); case (AddOnType.Wine): return(_mapper.Map <AddOnCreateDTO, Wine>(newAddOn)); case (AddOnType.Dessert): return(_mapper.Map <AddOnCreateDTO, Dessert>(newAddOn)); case (AddOnType.Aquapark): return(_mapper.Map <AddOnCreateDTO, Aquapark>(newAddOn)); case (AddOnType.Waterboard): return(_mapper.Map <AddOnCreateDTO, Waterboard>(newAddOn)); case (AddOnType.Sunbeds): return(_mapper.Map <AddOnCreateDTO, SunBeds>(newAddOn)); case (AddOnType.SkiPass): return(_mapper.Map <AddOnCreateDTO, SkiPass>(newAddOn)); case (AddOnType.SkiEquipment): return(_mapper.Map <AddOnCreateDTO, SkiEquipment>(newAddOn)); case (AddOnType.Snowboard): return(_mapper.Map <AddOnCreateDTO, Snowboard>(newAddOn)); case (AddOnType.Skis): return(_mapper.Map <AddOnCreateDTO, Skis>(newAddOn)); case (AddOnType.SkiPoles): return(_mapper.Map <AddOnCreateDTO, SkiPoles>(newAddOn)); case (AddOnType.SkiBoots): return(_mapper.Map <AddOnCreateDTO, SkiBoots>(newAddOn)); case (AddOnType.Sled): return(_mapper.Map <AddOnCreateDTO, Sled>(newAddOn)); case (AddOnType.BikeRent): return(_mapper.Map <AddOnCreateDTO, BikeRent>(newAddOn)); case (AddOnType.ScooterRent): return(_mapper.Map <AddOnCreateDTO, ScooterRent>(newAddOn)); case (AddOnType.Walk): return(_mapper.Map <AddOnCreateDTO, Walk>(newAddOn)); case (AddOnType.TourGuide): return(_mapper.Map <AddOnCreateDTO, TourGuide>(newAddOn)); case (AddOnType.TrainTour): return(_mapper.Map <AddOnCreateDTO, TrainTour>(newAddOn)); case (AddOnType.Meal): return(_mapper.Map <AddOnCreateDTO, Meal>(newAddOn)); case (AddOnType.Pogaca): return(_mapper.Map <AddOnCreateDTO, Pogaca>(newAddOn)); case (AddOnType.Schnapps): return(_mapper.Map <AddOnCreateDTO, Schnapps>(newAddOn)); default: return(null); } }
public async Task <AddOnDTO> CreateAddOn(AddOnCreateDTO newAddOn) { using (_unitOfWork) { AddOnDTO retValue; AddOn addOn = MapNewAddOn(newAddOn); addOn.Votable = new Votable(); int idToFind = 0; if (newAddOn.Lvl2DependId != 0) { idToFind = newAddOn.Lvl2DependId; } else if (newAddOn.Lvl1DependId != 0) { idToFind = newAddOn.Lvl1DependId; } Trip trip = await _unitOfWork.TripRepository.FindByID(newAddOn.TripId); if (idToFind == 0) { idToFind = trip.AddOnId; } addOn.SetDecoratorId(idToFind); await _unitOfWork.AddOnRepository.Create(addOn); await _unitOfWork.Save(); if (trip.AddOnId == idToFind) { trip.AddOnId = addOn.AddOnId; _unitOfWork.TripRepository.Update(trip); await _unitOfWork.Save(); retValue = _mapper.Map <AddOn, AddOnDTO>(addOn); await _messageControllerService.NotifyOnTripChanges(newAddOn.TripId, "AddAddOn", retValue); return(retValue); } AddOn currAddOn = await _unitOfWork.AddOnRepository.GetAddOnWithVotable(trip.AddOnId); while (currAddOn.GetDecoratorId() != idToFind) { currAddOn = await _unitOfWork.AddOnRepository.GetAddOnWithVotable(currAddOn.GetDecoratorId()); } currAddOn.SetDecoratorId(addOn.AddOnId); _unitOfWork.AddOnRepository.Update(currAddOn); await _unitOfWork.Save(); retValue = _mapper.Map <AddOn, AddOnDTO>(addOn); await _messageControllerService.NotifyOnTripChanges(newAddOn.TripId, "AddAddOn", retValue); return(retValue); } }
public async Task <ActionResult> CreateAddOn([FromBody] AddOnCreateDTO newAddOn) { try { if (!await _editRightsService.HasEditRights(newAddOn.TripId)) { return(BadRequest(new JsonResult("You can't currently edit this trip."))); } AddOnDTO result = await _addOnService.CreateAddOn(newAddOn); await _editRightsService.ProlongEditRights(newAddOn.TripId, _redisAppSettings.EditRightsProlongedTTL); if (result != null) { return(Ok(result)); } return(BadRequest(new JsonResult("Invalid add on information"))); } catch (Exception ex) { return(BadRequest(ex.Message)); } }