Example #1
0
        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.");
            }
        }