コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
            }
        }