public async Task <FileContentResult> GenerateExcel(BlankFile param, long userId, IImageHandler imageHandler = null) { if (!param.Validate()) { throw new ArgumentException(); } var blankType = await _blankTypeRepository.Get() .FirstOrDefaultAsync(bt => bt.Name.Equals(param.Type, StringComparison.OrdinalIgnoreCase)); if (blankType == null) { throw new InvalidOperationException(); } var questions = _questionRepository.Get().Where(q => q.BlankTypeId == blankType.Id).Select(q => q.Question); _imageHandler = imageHandler ?? ImageHandlerFactory.GetImageHanlderByType(blankType.Type); var file = await _imageHandler.GenerateExcel(param, questions) ?? throw new InvalidOperationException(); var user = await _userRepository.GetAsync(userId); file = await _blankFileRepository.AddAsync(file); user.BlankFileUsers.Add(new BlankFileUser { BlankFile = file, BlankFileId = file.Id, User = user, UserId = user.Id }); await _userRepository.EditAsync(user); return(new FileContentResult(Convert.FromBase64String(file.Data), file.FileType) { FileDownloadName = file.Name }); }
public Task <BlankFile> GenerateExcel(BlankFile param, IEnumerable <string> questions) { try { Questions = questions?.ToArray(); var pathToSave = Path.Combine( Directory.GetCurrentDirectory(), "wwwroot", DateTime.Now.Subtract(DateTime.MinValue).TotalSeconds.ToString(CultureInfo.CurrentCulture)); _savedImageName = pathToSave + param.Name; SavedBlackWhiteImageName = pathToSave + param.Name + "_bw"; _excelFileName = DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss_") + param.Type.Replace(" ", "") + ".xlsx"; _excelFilePath = pathToSave + _excelFileName; _recognizedBlankType = param.Type; _blankFile = param; SaveImage(_blankFile.Data, _savedImageName); SaveGrayScaleImage(); SearchAnswers(); var result = Task.FromResult(CreateExcel()); return(result); } finally { RemoveFiles(); GC.Collect(); } }
public async Task <FileContentResult> GenerateExcel([FromBody] BlankFile param) { return(await _userService.GenerateExcel(param, User.GetUserId())); }