/// <summary> /// Get helper for processing a document, based on document extension /// </summary> /// <param name="path">Source document full path</param> /// <returns></returns> private static DocumentHelper GetHelperForDocument(String path) { DocumentHelper helper = null; FileInfo fi = new FileInfo(path); String ext = fi.Extension.Substring(1).ToLower(); if (ext.Equals("docx")) { helper = new WordDocumentHelper(); } else if (ext.Equals("xlsx")) { helper = new ExcelDocumentHelper(); } else if (ext.Equals("pptx")) { helper = new PowerPointDocumentHelper(); } else if (ext.Equals("jpeg") || ext.Equals("jpg") || ext.Equals("png") || ext.Equals("bmp") || ext.Equals("gif") || ext.Equals("tiff")) { helper = new PictureDocumentHelper(); } else { if (TextHighlightConfiguration.GetTextHighlightForTextFile(path) != null) { helper = new TextDocumentHelper(); } } return(helper); }
/// <summary> /// Need to be removed, not used anymore /// </summary> /// <param name="path"></param> /// <returns></returns> public static Document LoadExistingDocument(String path) { DocumentHelper helper = new ExcelDocumentHelper(); Document document = null; return(document); }
public async Task <IActionResult> PrintDismissalRecruitsReport() { var dismissals = await _appDb.Dismissals .Include(m => m.Recruit) .ThenInclude(m => m.MilitaryComissariat) .OrderBy(m => m.Recruit.MilitaryComissariat.ShortName) .ThenBy(m => m.Recruit.FullName) .ToListAsync(); return(File(ExcelDocumentHelper.GenerateDismissalRecruitsReport(dismissals), ExcelDocumentHelper.OutputFormatType, "Списка призывников в увольнении.xlsx")); }
public async Task <IActionResult> PrintConscriptionPeriodReport(int conscriptionPeriodId, string dateAndOutgoingNumber) { var recruits = await _appDb.Recruits .Where(m => m.ConscriptionPeriodId == conscriptionPeriodId && m.DactyloscopyStatusId == DactyloscopyStatus.Selected) .Include(m => m.MilitaryComissariat) .AsNoTracking().ToListAsync(); return(File(ExcelDocumentHelper.GenerateConscriptionPeriodReport(recruits, dateAndOutgoingNumber), ExcelDocumentHelper.OutputFormatType, "Журнал учета военослужащих.xlsx")); }
private IEnumerable <T> LoadRecords <T>(string fileName) where T : new() { var records = new List <T>(); using (var dataTable = new DataTable()) { ExcelDocumentHelper.LoadFromSheet(fileName, dataTable, inferColumns: true); foreach (DataRow dataRow in dataTable.Rows) { var allEmpty = dataRow.ItemArray.All(o => o == null || Convert.IsDBNull(o)); if (allEmpty) { break; } var record = new T(); foreach (DataColumn dataColumn in dataTable.Columns) { var propertyInfo = dataColumn.ExtendedProperties["Property"] as PropertyInfo; if (propertyInfo == null) { propertyInfo = typeof(T).GetProperty(dataColumn.ColumnName); dataColumn.ExtendedProperties["Property"] = propertyInfo; } if (propertyInfo == null) { throw new ArgumentException("Column '{0}' is invalid".ParseTemplate(dataColumn.ColumnName)); } var value = dataRow[dataColumn.ColumnName]; if (value != null && !Convert.IsDBNull(value) && value != string.Empty) { try { value = ConvertValue(propertyInfo.PropertyType, value.ToString()); } catch (Exception anyException) { throw new ApplicationException("Column '{0}' contains invalid value, see inner exception".ParseTemplate(dataColumn.ColumnName), anyException); } if (value != null) { propertyInfo.SetValue(record, value); } } } records.Add(record); } } return(records.ToArray()); }
public async Task <IActionResult> PrintReturnTodayDismissalRecruitsReport() { var dismissals = await _appDb.Dismissals .Include(m => m.Recruit) .ThenInclude(m => m.MilitaryComissariat) .Where(m => m.ReturnDate.DayOfYear == DateTime.Now.DayOfYear) .OrderBy(m => m.Recruit.MilitaryComissariat.ShortName) .ThenBy(m => m.Recruit.FullName) .ToListAsync(); return(File(ExcelDocumentHelper.GenerateReturnTodayDismissalRecruitsReport(dismissals), ExcelDocumentHelper.OutputFormatType, "Списка призывников, возвращающихся с увольнения.xlsx")); }
public async Task <IActionResult> PrintMilitaryComissariatReport(string militaryComissariatId, int conscriptionPeriodId) { var militaryComissariat = await _appDb.MilitaryComissariats.AsNoTracking() .FirstOrDefaultAsync(m => m.Id == militaryComissariatId); var recruits = await _appDb.Recruits .Where(m => m.MilitaryComissariatCode == militaryComissariatId && m.ConscriptionPeriodId == conscriptionPeriodId) .OrderBy(m => m.LastName).AsNoTracking().ToListAsync(); return(File(ExcelDocumentHelper.GenerateMilitaryComissariatReport(recruits, militaryComissariat), ExcelDocumentHelper.OutputFormatType, "Именной список.xlsx")); }
public async Task <IActionResult> PrintRecruitsPhoneReport( DateTime startDate, DateTime endDate, string printMode = "today", string militaryComissariatId = "") { string header; var qRecruits = _zarnicaDb.Recruits.Include(m => m.MilitaryComissariat).AsNoTracking().AsQueryable(); if (!string.IsNullOrEmpty(militaryComissariatId)) { qRecruits = qRecruits.Where(m => m.MilitaryComissariatId == militaryComissariatId); } switch (printMode) { case "today": qRecruits = qRecruits.Where(m => m.DelivaryDate.DayOfYear == DateTime.Today.DayOfYear); header = DateTime.Today.ToShortDateString(); break; case "full": var conscriptionPeriod = await _appDb.ConscriptionPeriods.AsNoTracking().FirstOrDefaultAsync(c => !c.IsArchive); header = conscriptionPeriod.Name; break; case "period": qRecruits = qRecruits.Where(m => m.DelivaryDate.DayOfYear > startDate.DayOfYear); header = "период с " + startDate.ToShortDateString() + " по " + endDate.ToShortDateString(); break; default: return(RedirectToAction("Index")); } var recruits = await qRecruits.ToListAsync(); if (!string.IsNullOrEmpty(militaryComissariatId)) { header += " из " + recruits[0].MilitaryComissariat.ShortName; } return(File(ExcelDocumentHelper.GenerateRecruitsPhoneReport(recruits, header), ExcelDocumentHelper.OutputFormatType, $"Список призывников.xlsx")); }
/// <summary> /// After document was parsed, now it's time for charts, processed concurrent with presentation /// </summary> /// <param name="path">Source document path</param> /// <param name="worker">Background Worker</param> /// <param name="document">Current KineSis Document</param> public static void CreateNewDocumentCharts(String path, BackgroundWorker worker, Document document) { FileInfo file = new FileInfo(path); DocumentHelper helper = GetHelperForDocument(path); if (helper != null) { ProcessingProgress pp = new ProcessingProgress(worker); try { if (helper is PowerPointDocumentHelper) { PowerPointDocumentHelper h = (PowerPointDocumentHelper)helper; h.ParseNewDocumentCharts(path, pp, document); } else if (helper is ExcelDocumentHelper) { ExcelDocumentHelper h = (ExcelDocumentHelper)helper; h.ParseNewDocumentCharts(path, pp, document); } else if (helper is WordDocumentHelper) { WordDocumentHelper h = (WordDocumentHelper)helper; h.ParseNewDocumentCharts(path, pp, document); } } catch (Exception ex) { pp.OverallOperationName = "[Exception] " + ex.Message; // pp.OverallOperationTotalElements = 1; // MessageBox.Show(ex.Message); } Document.serialize(document, TEMP_DIRECTORY + "\\" + document.Location + ".xml"); ProfileManager.AddDocumentToActive(document.Name, document.Location); ProfileManager.Serialize(); } }