/// <summary> /// Gets a friendly header message to be shown to the user when a transfer successfully completes. /// </summary> /// <param name="transferType">Type of the transfer.</param> /// <returns>System.String.</returns> /// <exception cref="System.ArgumentException">Thrown when <paramref name="transferType" /> has an unexpected value.</exception> private static string GetTransferSuccessHeader(GalleryAssetTransferType transferType) { var hdr = Resources.GalleryServer.Task_Transfer_Objects_Transfer_Successful_Hdr; switch (transferType) { case GalleryAssetTransferType.Move: return(string.Format(hdr, Resources.GalleryServer.Task_Transfer_Objects_TransferType_Move_Text2)); case GalleryAssetTransferType.Copy: return(string.Format(hdr, Resources.GalleryServer.Task_Transfer_Objects_TransferType_Copy_Text2)); default: throw new ArgumentException($"Encountered unexpected GalleryAssetTransferType enum value '{transferType}'."); } }
/// <summary> /// Generates a friendly message to be shown to the user when a transfer successfully completes. /// </summary> /// <param name="destinationAlbum">The destination album.</param> /// <param name="itemsTransferred">The items that were moved or copied.</param> /// <param name="transferType">Type of the transfer.</param> /// <returns>System.String.</returns> /// <exception cref="System.ArgumentException">Thrown when <paramref name="transferType" /> has an unexpected value.</exception> private static string GetTransferSuccessMessage(IAlbum destinationAlbum, Entity.GalleryItem[] itemsTransferred, GalleryAssetTransferType transferType) { // Ex: Graduation day.JPG was successfully copied to the album My Vacation. // Ex: The selected items were successfully copied to the album My Vacation. var destAlbumUrl = Utils.GetUrl(PageId.album, "aid={0}", destinationAlbum.Id); var destAlbumTitle = Utils.RemoveHtmlTags(destinationAlbum.Title); string transferString; switch (transferType) { case GalleryAssetTransferType.Move: transferString = Resources.GalleryServer.Task_Transfer_Objects_TransferType_Move_Text1; break; case GalleryAssetTransferType.Copy: transferString = Resources.GalleryServer.Task_Transfer_Objects_TransferType_Copy_Text1; break; default: throw new ArgumentException($"Encountered unexpected GalleryAssetTransferType enum value '{transferType}'."); } if (itemsTransferred.Length == 1) { var url = (itemsTransferred[0].IsAlbum ? Utils.GetUrl(PageId.album, "aid={0}", itemsTransferred[0].Id) : Utils.GetUrl(PageId.mediaobject, "moid={0}", itemsTransferred[0].Id)); return(string.Format(Resources.GalleryServer.Task_Transfer_Objects_Transfer_Successful_Single_Dtl, url, itemsTransferred[0].Title, transferString, destAlbumUrl, destAlbumTitle)); } else { return(string.Format(Resources.GalleryServer.Task_Transfer_Objects_Transfer_Successful_Multiple_Dtl, transferString, destAlbumUrl, destAlbumTitle)); } }
/// <summary> /// Moves or copies the <paramref name="itemsToTransfer" /> to the <paramref name="destinationAlbumId" />. /// </summary> /// <param name="destinationAlbumId">The ID of the destination album.</param> /// <param name="itemsToTransfer">The items to transfer.</param> /// <param name="transferType">Type of the transfer.</param> /// <returns>An instance of <see cref="ActionResult" />.</returns> /// <exception cref="HttpResponseException">Thrown when an unexpected error occurs.</exception> /// <exception cref="HttpResponseMessage">Thrown when an unexpected error occurs.</exception> private static ActionResult TransferTo(int destinationAlbumId, Entity.GalleryItem[] itemsToTransfer, GalleryAssetTransferType transferType) { try { Entity.GalleryItem[] createdGalleryItems; var destinationAlbum = AlbumController.TransferToAlbum(destinationAlbumId, itemsToTransfer, transferType, out createdGalleryItems); return(new ActionResult() { Status = ActionResultStatus.Success.ToString(), Title = GetTransferSuccessHeader(transferType), Message = GetTransferSuccessMessage(destinationAlbum, itemsToTransfer, transferType), ActionTarget = createdGalleryItems }); } catch (GallerySecurityException) { return(new ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = Resources.GalleryServer.Task_Transfer_Objects_Cannot_Transfer_No_Permission_Msg_Hdr, Message = Resources.GalleryServer.Task_Transfer_Objects_Cannot_Transfer_No_Permission_Msg_Dtl }); } catch (InvalidAlbumException ex) { return(new ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = Resources.GalleryServer.Task_Transfer_Objects_Cannot_Transfer_To_Nested_Album_Msg_Hdr, Message = ex.Message }); } catch (CannotTransferAlbumToNestedDirectoryException ex) { return(new ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = Resources.GalleryServer.Task_Transfer_Objects_Cannot_Transfer_To_Nested_Album_Msg_Hdr, Message = ex.Message }); } catch (UnsupportedMediaObjectTypeException ex) { return(new ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = Resources.GalleryServer.Task_Transfer_Objects_Cannot_Transfer_UnsupportedFileType_Msg_Hdr, Message = String.Format(CultureInfo.InvariantCulture, Resources.GalleryServer.Task_Transfer_Objects_Cannot_Transfer_UnsupportedFileType_Msg_Dtl, System.IO.Path.GetExtension(ex.MediaObjectFilePath)), }); } catch (Exception ex) { AppEventController.LogError(ex); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = Utils.GetExStringContent(ex), ReasonPhrase = "Server Error" }); } }
/// <summary> /// Moves or copies the <paramref name="itemsToTransfer" /> to the <paramref name="destinationAlbumId" />. /// </summary> /// <param name="destinationAlbumId">The ID of the destination album.</param> /// <param name="itemsToTransfer">The items to transfer.</param> /// <param name="transferType">Type of the transfer.</param> /// <returns>An instance of <see cref="IActionResult" />.</returns> private IActionResult TransferTo(int destinationAlbumId, Entity.GalleryItem[] itemsToTransfer, GalleryAssetTransferType transferType) { try { //TODO: Need to implement TransferToAlbum() var destinationAlbum = _albumController.TransferToAlbum(destinationAlbumId, itemsToTransfer, transferType, out var createdGalleryItems); return(new JsonResult(new Business.ActionResult() { Status = ActionResultStatus.Success.ToString(), Title = $"{transferType} Successful", Message = "The items were transferred.", ActionTarget = createdGalleryItems })); } catch (GallerySecurityException) { return(new JsonResult(new Business.ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = "Transfer Aborted - Invalid Selection", Message = "You do not have permission to move or copy media assets to the selected album or you selected an album in a read-only gallery. Review your selection." })); } catch (InvalidAlbumException ex) { return(new JsonResult(new Business.ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = "Transfer Aborted - Invalid Selection", Message = ex.Message })); } catch (CannotTransferAlbumToNestedDirectoryException ex) { return(new JsonResult(new Business.ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = "Transfer Aborted - Invalid Selection", Message = ex.Message })); } catch (UnsupportedMediaObjectTypeException ex) { return(new JsonResult(new Business.ActionResult() { Status = ActionResultStatus.Error.ToString(), Title = "Transfer Aborted - Disabled File Type", Message = $"One or more media assets you selected is a disabled file type ({System.IO.Path.GetExtension(ex.MediaObjectFilePath)}). An administrator can enable this file type on the File Types page." })); } catch (Exception ex) { AppEventController.LogError(ex); return(StatusCode(500, _exController.GetExString(ex))); } }