Exemplo n.º 1
0
        private async Task <Result <IEnumerable <FileContentResult> > > GetCoverSampleResult(InputData inputData)
        {
            try
            {
                var method = _groupingManager.GetGroupingMethods().FirstOrDefault(x => x.MethodName.Equals(inputData.MethodName));

                if (method is null)
                {
                    return(new Result <IEnumerable <FileContentResult> >(NieOdnalezionoPodanejMetodyGrupujacej));
                }

                Thread.CurrentThread.IsBackground = true;
                _thread = Thread.CurrentThread;

                var progressBarModel = new ProgressBarModel();

                var step = inputData.Step.HasValue ? Convert.ToDouble(inputData.Step) : 0;

                var source = new CancellationTokenSource();
                var token  = source.Token;

                var waitRun = Task.Run(() =>
                {
                    while (!token.IsCancellationRequested)
                    {
                    }

                    token.ThrowIfCancellationRequested();
                }, token);

                var result = await
                             _coverMatrixManager.GetMatrix(inputData.File, inputData.Low, inputData.High, method,
                                                           inputData.ParamInput, step, progressBarModel, waitRun);

                var dataTxt          = DateTime.Now.ToFileTimeUtc() + "DataMatrixTxt.txt";
                var testTxt          = DateTime.Now.ToFileTimeUtc() + "TestTxt.txt";
                var dataMatrixStream = _txtExportert.GetTxtStream(result.Value.CoverResult.DataMatrix.DataTable);
                var testMatrixStream = _txtExportert.GetTxtStream(result.Value.CoverResult.TestMatrix.DataTable);

                var excelName = $"{result.Value.FileName.Replace(" ", "").Replace(".", "").Replace('-', '_').ToUpper()}_SLOW_{result.Value.SLOW}_SHIGH_{result.Value.SHIGH}_STEP_{result.Value.STEP}_METHOD_{result.Value.SelecteMethod.Replace(' ', '_').ToUpper().Replace('Ó', 'O').Replace('Ś', 'S').Replace('Ć', 'C')}_PARAM_{result.Value.SelecteMethodParam}_GRADE_{result.Value.CoverResult.Grade}.xlsx";

                var excelStream = _excelWriter.ExportToStream(
                    result.Value,
                    result.Value.CoverResult.DataMatrix.DataTable,
                    result.Value.CoverResult.TestMatrix.DataTable);

                if (excelStream.HasErrors())
                {
                    return(new Result <IEnumerable <FileContentResult> >(excelStream.Error));
                }

                progressBarModel.Progress = 100;

                var array = new[] {
                    File(testMatrixStream, "application/txt", testTxt),
                    File(dataMatrixStream, "application/txt", dataTxt),
                    File(excelStream.Value, "application/xlsx", excelName)
                };

                return(new Result <IEnumerable <FileContentResult> >(array));
            }
            catch (ThreadAbortException e)
            {
                return(new Result <IEnumerable <FileContentResult> >(e.Message));
            }
            catch (OperationCanceledException e)
            {
                return(new Result <IEnumerable <FileContentResult> >(e.Message));
            }
            catch (Exception e)
            {
                return(new Result <IEnumerable <FileContentResult> >(e.Message));
            }
            finally
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
        }