public Task <Result <CabinetFileInfo> > Handle(CreateDocumentCommand request, CancellationToken cancellationToken) { return(Task.Run(async() => { var dPath = Path.Combine(cs.DataDir, request.ContainerName); if (!Directory.Exists(dPath)) { var message = $"container name '{request.ContainerName}' does not exist"; return Result.Fail <CabinetFileInfo>(new Error(message)); } var fPath = Path.Combine(dPath, request.DocumentName); var fileExist = File.Exists(fPath); // override is off but file already exist if (!request.OverRide && fileExist) { return Result.Fail <CabinetFileInfo>(new Error($"file '{request.DocumentName}' already exist!")); } // override is on and file already exist if (request.OverRide && fileExist) { try { File.Delete(fPath); } catch (Exception ex) { return Result.Fail <CabinetFileInfo>(new Error(ex.Message)); } } using var stream = new FileStream(fPath, FileMode.Create); await request.FromFile.CopyToAsync(stream); var cfInfo = new CabinetFileInfo { Name = request.DocumentName, Path = fPath, Size = request.FromFile.Length, ContainerName = request.ContainerName, DocumentName = request.DocumentName, MimeType = request.FromFile.ContentType, CreatedAt = DateTime.UtcNow, }; return Result.Ok(cfInfo); })); }
public async Task <IActionResult> CreateDocument( IFormFile file, [FromQuery] string containerName, [FromQuery] string documentName, [FromQuery] bool overRide) { var query = new CreateDocumentCommand(file, containerName, documentName, overRide); var result = await _mediator.Send(query); if (!result.IsSuccess) { var reasons = result.Errors.ToArray().Select(r => r.Message); return(BadRequest(new { success = false, reasons })); } return(Ok(new { success = true, payload = result.Value })); }