Exemplo n.º 1
0
        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
            });
        }
Exemplo n.º 2
0
        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()));
 }