Exemplo n.º 1
0
        public ActionResult UploadSongFile(int SongId, string FieldName, HttpPostedFileBase File)
        {
            //lets get the song first
            var song = _songService.GetById(SongId);

            if (CanEdit(song) && (FieldName == "SongFile" || FieldName == "SampleFile"))
            {
                //ok so user can edit the song. let's see if it's a sample file or product file
                if (FieldName == "SongFile")
                {
                    //size check
                    if (File.ContentLength > _mobSocialSettings.SongFileMaximumUploadSize * 1024)
                    {
                        return(Json(new { Success = false, Message = "Maximum allowed file size is " + _mobSocialSettings.SongFileMaximumUploadSize + "KB" }));
                    }
                }
                else if (FieldName == "SampleFile")
                {
                    //size check
                    if (File.ContentLength > _mobSocialSettings.SongFileSampleMaximumUploadSize * 1024)
                    {
                        return(Json(new { Success = false, Message = "Maximum allowed file size is " + _mobSocialSettings.SongFileSampleMaximumUploadSize + "KB" }));
                    }
                }
                //we are here so files are good to download
                //save the downloaded files
                var songFile = new Download()
                {
                    ContentType    = File.ContentType,
                    DownloadGuid   = Guid.NewGuid(),
                    Filename       = Path.GetFileNameWithoutExtension(File.FileName),
                    Extension      = Path.GetExtension(File.FileName),
                    IsNew          = true,
                    UseDownloadUrl = false,
                    DownloadBinary = File.GetDownloadBits(),
                    DownloadUrl    = ""
                };
                _downloadService.InsertDownload(songFile);

                //now let's find the associated downloadable product and change it's download
                var product = _productService.GetProductById(song.AssociatedProductId);
                int oldDownloadId;
                if (FieldName == "SongFile")
                {
                    oldDownloadId      = product.DownloadId;
                    product.DownloadId = songFile.Id;
                    product.IsDownload = true;
                }
                else
                {
                    oldDownloadId             = product.SampleDownloadId;
                    product.SampleDownloadId  = songFile.Id;
                    product.HasSampleDownload = true;
                    //set preview url of song

                    song.PreviewUrl = Url.RouteUrl("GetSampleDownload", new { productId = product.Id });
                    _songService.Update(song);
                }

                //save the product now
                _productService.UpdateProduct(product);

                //delete the old download to clean up
                var download = _downloadService.GetDownloadById(oldDownloadId);
                if (download != null)
                {
                    _downloadService.DeleteDownload(download);
                }


                //and now that we have the song with us. let's send the preview and product id to the client
                return(Json(new { Success = true, PreviewUrl = song.PreviewUrl, ProductId = product.Id }));
            }
            else
            {
                return(Json(new { Success = false, Message = "Unauthorized" }));
            }
        }