public async Task UploadMaterials() { var mediator = ServiceProvider.GetService <IMediator>(); mediator.Should().NotBeNull(); var files = File.OpenRead(@"E:\logo.png"); files.Should().NotBeNull(); var userAgent = new UserAgentModel { UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36", Browser = "Chrome", DeviceBrand = "", DeviceFamily = "Other", DeviceModel = "", OperatingSystem = "Windows 10", IpAddress = "127.0.0.1" }; var courseMaterial = new CreateCourseMaterialModel { // FileUpload = files, //Name = files.Name, }; var uploadCommand = new CourseMaterialCommand(userAgent, courseMaterial); var result = await mediator.Send(uploadCommand).ConfigureAwait(false); result.Should().NotBeNull(); }
public async Task <IActionResult> UploadVideos([FromForm] IFormFile file) { var userAgent = Request.UserAgent(); var uploadCommand = new CourseMaterialCommand(userAgent, new Core.MongoDB.Domain.CourseMaterial.Models.CreateCourseMaterialModel { File = file, MediaTypeEnum = MediaTypeEnum.Videos, }); var result = await Mediator.Send(uploadCommand).ConfigureAwait(false); return(Ok(result)); }
protected override async Task <CourseMaterialReadModel> ProcessAsync(CourseMaterialCommand <CourseMaterialCreateModel> message, CancellationToken cancellationToken) { var records = new CourseMaterialReadModel(); var current = _mapper.Map <TrainDTrainorV2.Core.Data.Entities.CourseMaterial>(message.Model); var result = _mapper.Map <CreateResult>(_dataContext.FindFolder(new CourseMaterialPic() { Name = typeof(CourseMaterialPic).Name })); if (result == null) { result = _dataContext.CreateDir(new CourseMaterialPic() { Name = typeof(CourseMaterialPic).Name, ParentPath = null }); } if (message.Model.File != null) { if (message.Model.File.Length > 0) { var file = message.Model.File; var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); using (var ms = new MemoryStream()) { file.CopyTo(ms); var now = DateTimeOffset.Now; result = _dataContext.CreateFile(new LevelVideoPic() { Name = Guid.NewGuid() + "_" + message.Model.File.FileName, File_stream = ms.ToArray(), ParentPath = result.Path, Creation_time = now, Last_access_time = now, Last_write_time = now }); _mapper.Map(result, current); } } } if (result != null) { var dbSet = _dataContext.Set <Data.Entities.CourseMaterial>(); await dbSet.AddAsync(current, cancellationToken).ConfigureAwait(false); var status = await _dataContext.SaveChangesAsync(cancellationToken).ConfigureAwait(false); current = await _dataContext.CourseMaterials.Include(x => x.Course) .SingleOrDefaultAsync(x => x.Id == current.Id, cancellationToken).ConfigureAwait(false); if (status != 0) { _mapper.Map(current, records); var videofile = _dataContext.CourseMaterialPicFiletable.GetCourseMaterialId(current.FileId); _mapper.Map(videofile.FirstOrDefault(), records); return(records); } else { Logger.LogWarning($"Unable to insert course material, please try again later or contact administrator."); throw new DomainException(422, $"Unable to insert course material, please try again later or contact administrator."); } } else { Logger.LogWarning($"Unable to insert course material, please try again later or contact administrator."); throw new DomainException(422, $"Unable to insert course material, please try again later or contact administrator."); } }