Пример #1
0
 private void btnExport_Click(object sender, EventArgs e)
 {
     Cursor.Current = Cursors.WaitCursor;
     if (pathtosave.Length == 0)
     {
         Cursor.Current = Cursors.Default;
         MessageBox.Show("Please set the location to save the files before exporting.");
     }
     if (lstSelectedSamples.ItemCount > 0)
     {
         //only selected samples for batch
         Parallel.ForEach((List <string>)lstSelectedSamples.DataSource, samp =>
         {
             ReportDataVM rpData = new ReportDataVM(lstSelected.SelectedItem.ToString(), samp, "I");
             rpData.LoadData();
             rpData.BuildReportData();
             bool successful = CreateAndSaveFile(rpData);
         });
         Cursor.Current = Cursors.Default;
         MessageBox.Show("Export is complete");
     }
     else if (lstSelected.ItemCount > 0)
     {
         ConcurrentDictionary <string, List <ReportDataVM> > batchRpt = new ConcurrentDictionary <string, List <ReportDataVM> >();
         //all selected batches with their samples.
         foreach (string batc in Selectedbatches.Keys)
         {
             Parallel.ForEach(Selectedbatches[batc], item =>
             {
                 ReportDataVM rpData = new ReportDataVM(batc, item, "I");
                 rpData.LoadData();
                 rpData.BuildReportData();
                 if (batchRpt.ContainsKey(batc))
                 {
                     batchRpt[batc].Add(rpData);
                 }
                 else
                 {
                     List <ReportDataVM> rpt = new List <ReportDataVM>();
                     rpt.Add(rpData);
                     batchRpt.TryAdd(batc, rpt);
                 }
                 //bool successful = CreateAndSaveFile(rpData);
             });
             bool successful = CreateAndSaveFile(batchRpt, batc);
         }
         Cursor.Current = Cursors.Default;
         MessageBox.Show("Export is complete");
     }
     else
     {
         Cursor.Current = Cursors.Default;
         MessageBox.Show("No Batches or Samples have been selected.");
     }
 }
Пример #2
0
        private bool CreateAndSaveFile(ReportDataVM reportDataVM)
        {
            Excel.Application appExcel;
            Excel._Workbook   wrkbook;
            Excel.Workbooks   objBooks;
            Excel.Sheets      objSheets;
            Excel._Worksheet  objSheet;
            Excel.Range       range;
            //Excel.Font font = null;
            try
            {
                // Instantiate Excel and start a new workbook.
                appExcel  = new Excel.Application();
                objBooks  = appExcel.Workbooks;
                wrkbook   = objBooks.Add();
                objSheets = wrkbook.Worksheets;

                objSheet = (Excel.Worksheet)objSheets.get_Item(1);


                objSheet.Cells[1, 1] = $"Sample ID";
                objSheet.get_Range("B1", "B1").ColumnWidth = 15;
                objSheet.Cells[1, 2] = $"Serum Date";
                objSheet.get_Range("C1", "C1").ColumnWidth = 30;
                objSheet.Cells[1, 3] = $"Strong MFI (>5000) Alleles";
                objSheet.get_Range("D1", "D1").ColumnWidth = 30;
                objSheet.Cells[1, 4] = $"Mod MFI (2000-5000) Alleles";
                objSheet.get_Range("E1", "E1").ColumnWidth = 30;
                objSheet.Cells[1, 5] = $"Weak MFI (700-2000) Alleles";
                objSheet.get_Range("F1", "F1").ColumnWidth = 30;
                objSheet.Cells[1, 6] = $"Strong MFI (>5000) Serology";
                objSheet.get_Range("G1", "G1").ColumnWidth = 30;
                objSheet.Cells[1, 7] = $"Mod MFI (2000-5000) Serology";
                objSheet.get_Range("H1", "H1").ColumnWidth = 30;
                objSheet.Cells[1, 8] = $"Weak MFI (700-2000) Serology";
                objSheet.get_Range("I1", "I1").ColumnWidth = 30;
                objSheet.Cells[1, 9] = $"A, B, DR MFI (3500-5000) Serology";
                objSheet.Range["A1:A9"].Style.Font.Name           = "Calbri";
                objSheet.Range["A1:A9"].Style.Font.Size           = 8;
                objSheet.Range["A1:A9"].Style.WrapText            = true;
                objSheet.Range["A1:A9"].Style.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                objSheet.Range["A1:A9"].Style.VerticalAlignment   = Excel.XlVAlign.xlVAlignTop;
                objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
                objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle   = Excel.XlLineStyle.xlContinuous;
                objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle  = Excel.XlLineStyle.xlContinuous;
                objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle    = Excel.XlLineStyle.xlContinuous;
                objSheet.Range["A1:I2"].Borders.Color = Color.Black;
                objSheet.Cells[2, 1] = reportDataVM.reportdb.SampleID;
                objSheet.Cells[2, 2] = reportDataVM.reportdb.SerumDate;
                objSheet.Cells[2, 3] = reportDataVM.reportdb.StrongAlleleFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.StrongAlleleFinal;
                objSheet.Cells[2, 4] = reportDataVM.reportdb.ModAllelesFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.ModAllelesFinal;
                objSheet.Cells[2, 5] = reportDataVM.reportdb.WeakAllelesFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.WeakAllelesFinal;
                objSheet.Cells[2, 6] = reportDataVM.reportdb.StrongSerologyFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.StrongSerologyFinal;
                objSheet.Cells[2, 7] = reportDataVM.reportdb.ModSerologyFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.ModSerologyFinal;
                objSheet.Cells[2, 8] = reportDataVM.reportdb.WeakSerologyFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.WeakSerologyFinal;
                objSheet.Cells[2, 9] = reportDataVM.reportdb.UnacceptableSeroFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.UnacceptableSeroFinal;
                if (!pathtosave.EndsWith("\\"))
                {
                    pathtosave = pathtosave + "\\";
                }
                wrkbook.SaveAs($"{pathtosave}{reportDataVM.sessionid}_{reportDataVM.sampleid}.xlsx");


                appExcel.Quit();
                GC.Collect();

                Marshal.FinalReleaseComObject(objSheets);
                Marshal.FinalReleaseComObject(objSheet);

                Marshal.FinalReleaseComObject(objBooks);

                Marshal.FinalReleaseComObject(wrkbook);
                Marshal.FinalReleaseComObject(appExcel);
                //dispose of objects.
                appExcel  = null;
                wrkbook   = null;
                objBooks  = null;
                objSheet  = null;
                objSheets = null;
                range     = null;


                return(true);
            }
            catch (Exception ex)
            {
                unsuccessfuleBatches.Add($"{reportDataVM.sessionid} : {reportDataVM.sampleid}");
                return(false);
            }
        }
Пример #3
0
        public async Task <ReportDataOutput> GetReportData()
        {
            try
            {
                int periodId = 1;

                _logger.LogInformation("اجرای متد بازیابی اطلاعات کارنامه");
                var personData = await _personArzeshyabiService.GetPersonArzeshyabiByPersonCodeAsync(periodId, 13137);

                //var result = _mapper.Map<Person, ReportDataVM>(personData);
                ReportDataVM dataVM = new ReportDataVM();
                dataVM.PersonCode       = personData.PersonInBranch.Person.PersonCode;
                dataVM.FirstName        = personData.PersonInBranch.Person.FirstName;
                dataVM.LastName         = personData.PersonInBranch.Person.LastName;
                dataVM.BirthDate        = personData.PersonInBranch.Person.BirthDate;
                dataVM.EmployeeDate     = personData.PersonInBranch.Person.EmployeeDate;
                dataVM.StudyBranch      = personData.PersonInBranch.Person.StudyBranch;
                dataVM.StudyJob         = personData.PersonInBranch.Person.StudyJob;
                dataVM.Grade            = personData.PersonInBranch.Person.Grade;
                dataVM.BranchCode       = personData.PersonInBranch.Branch.BranchCode;
                dataVM.BranchName       = personData.PersonInBranch.Branch.BranchName;
                dataVM.ZoneName         = personData.PersonInBranch.Branch.ZoneName;
                dataVM.Arzyab1          = personData.Arzyab1.ToString();
                dataVM.Arzyab2          = personData.Arzyab2.ToString();
                dataVM.MaghtaArzeshyabi = personData.ArzyabiDate;

                var reportTaData = await _personScoreService.GetPersonScoreByPersonCodeAsync(periodId, personData.PersonInBranch.Person.PersonCode);

                List <ReportTaDataVM> listTa = new List <ReportTaDataVM>();
                foreach (var item in reportTaData)
                {
                    ReportTaDataVM ta = new ReportTaDataVM();
                    ta.ScoreIndexTitle    = item.ScoreSubIndex.ScoreIndex.Title;
                    ta.ScoreSubIndexTitle = item.ScoreSubIndex.Title;
                    ta.Value        = item.Value;
                    ta.Score        = item.Score;
                    ta.RankInBranch = item.RankInBranch;
                    ta.RankInZone   = item.RankInZone;
                    ta.RankInBank   = item.RankInBank;
                    listTa.Add(ta);
                }
                dataVM.ReportTaDataList = listTa;

                var reportData = await _reportService.GetReportByPersonCodeAsync(periodId, personData.PersonInBranch.Person.PersonCode);

                foreach (var item in reportData)
                {
                    var txt = await _meritPayFactorService.GetMeritPayByIdAsync(item.MeritPayFactorId);

                    switch (txt.Title)
                    {
                    case "تراکنش های عملکردی":
                        dataVM.TaScore        = item.Score;
                        dataVM.TaRankInBranch = item.RankInBranch;
                        dataVM.TaRankInZone   = item.RankInZone;
                        dataVM.TaRankInBank   = item.RankInBank;
                        break;

                    case "امتیاز گروهی":
                        dataVM.GroupScore        = item.Score;
                        dataVM.GroupRankInBranch = item.RankInBranch;
                        dataVM.GroupRankInZone   = item.RankInZone;
                        dataVM.GroupRankInBank   = item.RankInBank;
                        break;

                    case "ارزشیابی فردی":
                        dataVM.ArzeshScore        = item.Score;
                        dataVM.ArzeshRankInBranch = item.RankInBranch;
                        dataVM.ArzeshRankInZone   = item.RankInZone;
                        dataVM.ArzeshRankInBank   = item.RankInBank;
                        break;

                    default:
                        break;
                    }
                }
                return(new ReportDataOutput(true, dataVM));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "خطا در بازیابی اطلاعات کارنامه");
                return(new ReportDataOutput(false, null, "خطا در بازیابی اطلاعات کارنامه"));
            }
        }