/// <summary> /// 1. Fetches Google Sheets data /// 2. Converts Google Sheets data to WeldingInspection objects /// 3. Checks if the WeldingInspection objects are valid for database /// </summary> /// <param name="service">Google Sheets API v4 service to connect to Google Sheets</param> /// <param name="operators">All operators data from spreadsheets.json config file</param> /// <param name="allRanges">All range data from spreadsheets.json config file</param> /// <param name="sb">StringBuilder workflow output</param> /// <exception cref="Weldings.DbUpdateException">is thrownon on failed db update and failed rollback if Settings.Default.AbortOnFailedRollback is set to true</exception> public static void DoControll( SheetsService service, Spreadsheets.Operator[] operators, Spreadsheets.SheetsRanges allRanges, StringBuilder sb) { allInspections = new List <WeldingInspection>(); foreach (Spreadsheets.Operator oper in operators) { OnProgressUpdated(0, $"updating DB: operator - {oper.OperatorId}, sheet - \"{allRanges.Pirmieji.SheetName}\"..."); DoControllSingleSheet( service, oper, allRanges.Pirmieji, DataConverter.ConvertPirmieji, DBUpdater.DoPirmieji, sb); OnProgressUpdated(0, $"updating DB: operator - {oper.OperatorId}, sheet - \"{allRanges.Nepirmieji.SheetName}\"..."); DoControllSingleSheet( service, oper, allRanges.Nepirmieji, DataConverter.ConvertNepirmieji, DBUpdater.DoNepirmieji, sb); } }
/// <summary> /// 1. Fetches Google Sheets data /// 2. Converts Google Sheets data to WeldingInspection objects /// 3. Checks if the WeldingInspection objects are valid for database /// </summary> /// <param name="service">Google Sheets API v4 service to connect to Google Sheets</param> /// <param name="operators">All operators data from spreadsheets.json config file</param> /// <param name="allRanges">All range data from spreadsheets.json config file</param> /// <param name="sb">StringBuilder workflow output</param> public static void DoControll( SheetsService service, Spreadsheets.Operator[] operators, Spreadsheets.SheetsRanges allRanges, StringBuilder sb) { allInspections = new List <WeldingInspection>(); foreach (Spreadsheets.Operator oper in operators) { sb.AppendLine(); OnProgressUpdated(0, $"verifying data: operator - {oper.OperatorId}, sheet - \"{allRanges.Pirmieji.SheetName}\"..."); DoControllSingleSheet( service, oper, allRanges.Pirmieji, DataConverter.ConvertPirmieji, ObjectVerifier.VerifyPirmieji, sb); OnProgressUpdated(0, $"verifying data: operator - {oper.OperatorId}, sheet - \"{allRanges.Nepirmieji.SheetName}\"..."); DoControllSingleSheet( service, oper, allRanges.Nepirmieji, DataConverter.ConvertNepirmieji, ObjectVerifier.VerifyNepirmieji, sb); } StringBuilder repSb = RepeatFinder.FindRepeats(allInspections.ToList()); sb.AppendLine(Messages.Default.RepeatedRecordsHeader); sb.Append(repSb); }
private static StringBuilder fetchConvertVerifySpreadsheet( SheetsService service, Spreadsheets.Operator operatorData, Spreadsheets.SheetsRanges allRanges) { StringBuilder sb = new StringBuilder().AppendLine(operatorData.OperatorId); StringBuilder pirmiejiProblems = fetchConvertVerifySheet( service, operatorData, allRanges.Pirmieji, DataConverter.ConvertPirmieji, ObjectVerifier.VerifyPirmieji); StringBuilder nepirmiejiProblems = fetchConvertVerifySheet( service, operatorData, allRanges.Nepirmieji, DataConverter.ConvertNepirmieji, ObjectVerifier.VerifyNepirmieji); return(sb.AppendLine("Pirmieji").Append(pirmiejiProblems).AppendLine("Nepirmieji").Append(nepirmiejiProblems)); }
private void doDBUpdateWork(BackgroundWorker worker, DoWorkEventArgs e) { int pc = 1; // progress count SheetsService service = null; string outputFileName = string.Empty; bool preWorkResult = preWork(ref service, ref outputFileName, worker, e, ref pc); if (!preWorkResult) { return; } Spreadsheets.Operator[] operators = SpreadsheetsData.Operators; Spreadsheets.SheetsRanges allRanges = SpreadsheetsData.AllRanges; StringBuilder sb = new StringBuilder(); sb.AppendFormat(StartFormMessages.Default.DataVerifyOutputHeaderFormat, DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString()); sb.AppendLine(); if (worker.CancellationPending) { e.Cancel = true; } worker.ReportProgress(pc++, "Creating DB update report file..."); string reportFileName = createFileName( Settings.Default.UpdateReportFileNameFormat, "UpdateReportFileNameFormat", ".txt"); if (reportFileName == string.Empty) { return; } if (worker.CancellationPending) { e.Cancel = true; } worker.ReportProgress(pc++, "Creating DB file backup..."); // create db backup if (Settings.Default.CreateDBBackup) { string dbBackupFileName = createFileName( Settings.Default.DBBackupFilenameFormat, "DBBackupFilenameFormat", Path.GetExtension(Path.GetFileName(Settings.Default.AccessDbPath))); if (dbBackupFileName == string.Empty) { return; } try { File.Copy(Settings.Default.AccessDbPath, dbBackupFileName, true); } catch (Exception ex) { worker.ReportProgress(0, string.Format( StartFormMessages.Default.UnableCreateDBCopy, Settings.Default.AccessDbPath, dbBackupFileName)); LogWriter.Log(ex); return; } } // do the main job and write processing info file if (worker.CancellationPending) { e.Cancel = true; } worker.ReportProgress(pc++, "Starting the data update work:"); try { ControllerUpdate.DoControll(service, operators, allRanges, sb); } catch (DbUpdateException dbuEx) { worker.ReportProgress(0, StartFormMessages.Default.RollbackFailureError); LogWriter.Log(dbuEx); } catch (Exception ex) { string errorMessage = StartFormMessages.Default.UnexpectedExceptionHeader + ex.Message; worker.ReportProgress(0, errorMessage); sb.AppendLine(errorMessage); LogWriter.Log(ex); } finally { service.Dispose(); using (StreamWriter sw = new StreamWriter(outputFileName)) { try { sw.Write(sb); } catch (Exception ex) { worker.ReportProgress(0, string.Format( StartFormMessages.Default.UnableWriteUpdateInfoFile, outputFileName) + ex.Message); LogWriter.Log(ex); } } } // create report StringBuilder sbReport = ReportCreator.CreateTxt( ControllerUpdate.GetInspections()); using (StreamWriter sw = new StreamWriter(reportFileName)) { try { sw.Write(sbReport); } catch (Exception ex) { worker.ReportProgress(0, string.Format( StartFormMessages.Default.UnableWriteUpdateReportFile, reportFileName) + ex.Message); LogWriter.Log(ex); return; } } e.Result = string.Format(StartFormMessages.Default.UpdateDoneMessage, outputFileName); }
private void doDataVerifyWork(BackgroundWorker worker, DoWorkEventArgs e) { int pc = 1; // progress count SheetsService service = null; string outputFileName = string.Empty; bool preWorkResult = preWork(ref service, ref outputFileName, worker, e, ref pc); if (!preWorkResult) { return; } Spreadsheets.Operator[] operators = SpreadsheetsData.Operators; Spreadsheets.SheetsRanges allRanges = SpreadsheetsData.AllRanges; StringBuilder sb = new StringBuilder(); sb.AppendFormat(StartFormMessages.Default.DataVerifyOutputHeaderFormat, DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString()); sb.AppendLine(); // do the main job and write processing info file if (worker.CancellationPending) { e.Cancel = true; } worker.ReportProgress(pc++, "Starting the data verify work:"); try { // the main work ControllerVerify.DoControll(service, operators, allRanges, sb); } catch (Exception ex) { // all exceptions are caught and logged into sb // this is for some unexpected exception worker.ReportProgress(0, StartFormMessages.Default.UnexpectedExceptionHeader + ex.Message); LogWriter.Log(ex); return; } finally { service.Dispose(); using (StreamWriter sw = new StreamWriter(outputFileName)) { try { sw.Write(sb); } catch (Exception wEx) { worker.ReportProgress(0, string.Format( StartFormMessages.Default.UnableWriteVerifyInfoFile, outputFileName)); LogWriter.Log(wEx); } } } e.Result = string.Format(StartFormMessages.Default.VerifyDoneMessage, outputFileName); }
public static StringBuilder FetchConvertVerify(SheetsService service, Spreadsheets.Operator[] operators, Spreadsheets.SheetsRanges allRanges) { StringBuilder sb = new StringBuilder(DateTime.Now.ToShortDateString()).Append(", ").AppendLine(DateTime.Now.ToShortTimeString()); foreach (Spreadsheets.Operator operatorData in operators) { StringBuilder operatorProblems = fetchConvertVerifySpreadsheet(service, operatorData, allRanges); sb.Append(operatorProblems); sb.AppendLine(); } StringBuilder repSb = RepeatFinder.FindRepeats(allInspections); sb.AppendLine().AppendLine("Pasikartojantys suvirinimai:"); sb.Append(repSb); return(sb); }
public static void fetchConvertUpdate(SheetsService service, Spreadsheets.Operator[] operators, Spreadsheets.SheetsRanges allRanges) { foreach (Spreadsheets.Operator operatorData in operators) { fetchConvertUpdateSpreadsheet(service, operatorData, allRanges); } allInspections.ToList(); }
private static void fetchConvertUpdateSpreadsheet(SheetsService service, Spreadsheets.Operator operatorData, Spreadsheets.SheetsRanges allRanges) { fetchConvertUpdateSheet(service, operatorData, allRanges.Pirmieji, DataConverter.ConvertPirmieji, DBUpdater.DoPirmieji); fetchConvertUpdateSheet(service, operatorData, allRanges.Nepirmieji, DataConverter.ConvertNepirmieji, DBUpdater.DoNepirmieji); }