public async Task <IActionResult> SaveFile(IFormFile uploadedFile) { var stream = uploadedFile.OpenReadStream(); return(await TryAsync(CommandAsync(SaveAudioCommand.CreateInstance(uploadedFile.FileName, stream)).Map(list => (IActionResult)Ok(list))) .IfFail(exception => (IActionResult)BadRequest(exception.Message))); }
public Task <Unit> Handle(SaveAudioCommand request, CancellationToken cancellationToken) { return(_audioDxo.Map(request) .Bind(audio => _unitOfWork.AudioRepository.CreateAsync(audio)) .Match(audio => audio.AsTask(), exception => exception.AsFailedTask <Audio>()) .Bind(audio => _unitOfWork.Commit().ToUnit())); //.Bind(audio => _unitOfWork.AudioRepository.UploadStreamAsync(audio.Id, request.Stream).ToUnit()) //.Bind(audio => _unitOfWork.Commit().ToUnit()); }
public TryAsync <Audio> Map(SaveAudioCommand audioCommand) { var config = new MapperConfiguration(cfg => { cfg.CreateMap <SaveAudioCommand, Audio>() .ForMember(audio => audio.Content, expression => expression.MapFrom(command => ReadToEnd(command.Stream))) .ForMember(audio => audio.CreatedOn, expression => expression.MapFrom(command => DateTimeOffset.Now)); }); var mapper = config.CreateMapper(); return(TryAsync(() => mapper.Map <Audio>(audioCommand).AsTask())); }