// public async Task<NewMediaResult> TryUploadMedias(List<BaseObject> medias) // { // foreach (var media in medias) { // var error = await UploadMedia(media); // if (error.Error) { // return error; // } // } // return new NewMediaResult() { // Error = false, // Medias = medias // }; // } public async Task <NewMediaResult> UploadMedia(BaseObject media) { if (media is Create createMedia) { if (createMedia.obj.attachment != null && createMedia.obj.attachment.items != null && createMedia.obj.attachment.items.Count > 0) { foreach (var attch in createMedia.obj.attachment.items) { if (attch is Document doc) { var attchModel = new ArchivedMediaModel { MediaType = (CommonMediaType)Enum.Parse(typeof(CommonMediaType), doc.type), SizeBytes = 0, UserId = media.UserId.Value, }; _dbContext.ArchivedMedia.Add(attchModel); await _dbContext.SaveChangesAsync(); using (var newStream = File.Create(LocalPath(attchModel))) { using (var oldStream = new FileStream(doc.url.content, FileMode.Open, FileAccess.Read, FileShare.Read)) { await oldStream.CopyToAsync(newStream); } File.Delete(doc.url.content); } attchModel.UploadedStatus = true; await _dbContext.SaveChangesAsync(); } } } } media.published = DateTime.UtcNow; return(new NewMediaResult() { Error = false, Medias = new List <BaseObject>() { media } }); }
public Task <BaseObject> Transform(ArchivedMediaModel archivedMediaModel) { throw new NotImplementedException(); }
public string LocalPath(ArchivedMediaModel media) => _env.ContentRootPath + $"/Upload/Archive/{media.UserId}-{media.Id}";