예제 #1
0
        public async Task <ImageVm> Handle(UploadImageCommand request, CancellationToken cancellationToken)
        {
            var sportObject = await _context.SportObjects.FindAsync(request.SportObjectId);

            if (sportObject == null)
            {
                throw new NotFoundException(nameof(SportObject), sportObject.Id);
            }

            var isOwner = await _identityService.CheckIfClientIsOwnerAsync(sportObject);

            if (!isOwner)
            {
                throw new Exception("Bad client");
            }

            var imageUploadResult = _imageService.AddPhoto(request.File);

            var image = new Image
            {
                Url = imageUploadResult.Url,
                Id  = imageUploadResult.PublicId
            };

            if (!sportObject.Images.Any(x => x.IsMain))
            {
                image.IsMain = true;
            }

            sportObject.Images.Add(image);

            await _context.SaveChangesAsync(cancellationToken);

            ImageVm vm = new ImageVm
            {
                Id            = image.Id,
                Url           = image.Url,
                IsMain        = image.IsMain,
                SportObjectId = image.SportObjectId,
            };

            return(vm);
        }
예제 #2
0
        public bool Edit(string roadId, string roadName, string startingPoint, string endPoint, double roadLength,
                         string description, string video, IFormFile imageFromForm, int viewRating, int surfaceRating,
                         int pleasureRating)
        {
            if (roadName == null || startingPoint == null || endPoint == null || roadLength == 0.00 ||
                description == null)
            {
                return(false);
            }

            string embedYoutubeUrl = null;

            if (video != null)
            {
                embedYoutubeUrl = videoService.ReturnEmbedYoutubeLink(video);
            }

            var road = this.context.Roads.FirstOrDefault(x => x.Id == roadId);

            if (road == null)
            {
                return(false);
            }

            road.RoadName       = roadName;
            road.Description    = description;
            road.StartingPoint  = startingPoint;
            road.EndPoint       = endPoint;
            road.RoadLength     = roadLength;
            road.SurfaceRating  = surfaceRating;
            road.ViewRating     = viewRating;
            road.PleasureRating = pleasureRating;

            if (road.Video != video)
            {
                road.Video = embedYoutubeUrl;
            }

            context.SaveChanges();

            if (imageFromForm != null)
            {
                road.CoverPhoto = null;

                var image = imageService.AddPhoto(imageFromForm);

                image.Name = roadName + "main";

                var coverPhoto = new CoverPhotoRoad {
                    Image = image, ImageId = image.Id, Road = road, RoadId = road.Id
                };

                context.CoverPhotoRoads.Add(coverPhoto);
                context.SaveChanges();

                road.CoverPhoto   = coverPhoto;
                road.CoverPhotoId = coverPhoto.Id;

                context.SaveChanges();
            }

            return(true);
        }