private void sb_readAndSavePartsToDB(int idGroup, string groupName, bool getAttach, string attachmentDirPath) { wagonPartsDataTable dt = new wagonPartsDataTable(1, 0, false); string html; try { this.v_webBrowser.FindElement(By.Id("__tab_ContentPlaceHolder1_TabContainer1_PartPanel")).Click(); } catch { return; } html = this.v_webBrowser.PageSource; if (!string.IsNullOrEmpty(html)) { dt.Rows.Clear(); Functions.sb_fillDatatableWithHtmlTableId(html, v_tableIdParts, dt); if (getAttach) { this.sb_getAttach(dt, attachmentDirPath, groupName); } if (dt.Rows.Count > 0) { this.sb_savePartsToDB(dt, idGroup); } } }
private void sb_savePartsToDB(wagonPartsDataTable dt, int?idGroup) { if (dt == null) { return; } int i; bool add; string partName; Model.rwmmsWagonPart entry_wagonParts; using (var entityLogistic = new Model.logisticEntities()) { for (i = 0; i <= dt.Rows.Count - 1; i++) { add = false; if (!Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_partName]) && idGroup.HasValue) { partName = dt.Rows[i][wagonPartsDataTable.fld_partName].ToString(); entry_wagonParts = entityLogistic.rwmmsWagonParts.FirstOrDefault(o => o.IdGroup == idGroup && o.wPartName == partName); if (entry_wagonParts == null) { add = true; entry_wagonParts = new Model.rwmmsWagonPart(); } } else { entry_wagonParts = new Model.rwmmsWagonPart(); } entry_wagonParts.FetchTime = DateTime.Now; entry_wagonParts.IdGroup = idGroup; entry_wagonParts.wCountInGroup = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_countInGroup]) ? null : (int?)int.Parse(dt.Rows[i][wagonPartsDataTable.fld_countInGroup].ToString()); entry_wagonParts.wCountInWagon = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_countInWagon]) ? null : (int?)int.Parse(dt.Rows[i][wagonPartsDataTable.fld_countInWagon].ToString()); entry_wagonParts.wMapNumber = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_mapNumber]) ? null : dt.Rows[i][wagonPartsDataTable.fld_mapNumber].ToString(); entry_wagonParts.wMapPic1Path = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_mapPic1Path]) ? null : dt.Rows[i][wagonPartsDataTable.fld_mapPic1Path].ToString(); entry_wagonParts.wMapPic2Path = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_mapPic2Path]) ? null : dt.Rows[i][wagonPartsDataTable.fld_mapPic2Path].ToString(); entry_wagonParts.wMapPic3Path = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_mapPic3Path]) ? null : dt.Rows[i][wagonPartsDataTable.fld_mapPic3Path].ToString(); entry_wagonParts.wMapPic4Path = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_mapPic4Path]) ? null : dt.Rows[i][wagonPartsDataTable.fld_mapPic4Path].ToString(); entry_wagonParts.wMapPicPath = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_mapPicPath]) ? null : dt.Rows[i][wagonPartsDataTable.fld_mapPicPath].ToString(); entry_wagonParts.wPartName = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_partName]) ? null : dt.Rows[i][wagonPartsDataTable.fld_partName].ToString(); entry_wagonParts.wPartNameLatin = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_partNameLatin]) ? null : dt.Rows[i][wagonPartsDataTable.fld_partNameLatin].ToString(); entry_wagonParts.wWeight = Functions.IsNull(dt.Rows[i][wagonPartsDataTable.fld_weight]) ? null : (decimal?)decimal.Parse(dt.Rows[i][wagonPartsDataTable.fld_weight].ToString()); if (add) { entityLogistic.rwmmsWagonParts.Add(entry_wagonParts); } else { entityLogistic.Entry(entry_wagonParts).State = System.Data.Entity.EntityState.Modified; } try { entityLogistic.SaveChanges(); } catch (Exception ex) { } } } }
private void sb_getAttach(wagonPartsDataTable dt, string directoryPath, string groupName) { System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> rows; int htmlRowIndex = dt.prp_skipRowTop; int dtRowIndex = 0; int fileExistCounter; char[] chArrInvalidFileChars = Path.GetInvalidFileNameChars(); char[] chArrInvalidPathChars = Path.GetInvalidPathChars(); groupName = string.Join("_", groupName.Split(chArrInvalidFileChars)); groupName = string.Join("_", groupName.Split(chArrInvalidPathChars)); string downloadPath = directoryPath + (directoryPath.EndsWith("\\") ? "" : "\\") + groupName; if (!Directory.Exists(downloadPath)) { Directory.CreateDirectory(downloadPath); } do { try { rows = Functions.fnc_getSeleniumTableRows(this.v_webBrowser, this.v_tableIdParts); } catch { return; } if (!Functions.IsNull(dt.Rows[dtRowIndex][wagonPartsDataTable.fld_partName])) { var cells = rows[htmlRowIndex].FindElements(By.TagName("td")); if (cells.Count >= 6) { if (!Functions.IsNull(cells[6].Text)) { cells[6].Click(); SharedFunctions.sb_waitForReady(this.v_webBrowser); FileInfo myFile; do { fileExistCounter = 0; myFile = (new DirectoryInfo(this.v_downloadPath)).GetFiles("*.*").OrderByDescending(o => o.LastWriteTime).FirstOrDefault(); #region wait for download completion while (myFile == null || myFile.LastWriteTime < DateTime.Now.AddMinutes(-5)) { Thread.Sleep(1000); myFile = (new DirectoryInfo(this.v_downloadPath)).GetFiles("*.*").OrderByDescending(o => o.LastWriteTime).FirstOrDefault(); fileExistCounter++; if (fileExistCounter > 30) { break; } } #endregion if (myFile == null || myFile.LastWriteTime < DateTime.Now.AddMinutes(-5)) { //there is error throw new Exception("File cannot be downloaded"); } else if (myFile.Extension != ".crdownload" && myFile.Extension != ".tmp") { string fileName = "map_" + dt.Rows[dtRowIndex][wagonPartsDataTable.fld_partName].ToString(); fileName = string.Join("_", fileName.Split(chArrInvalidFileChars)); fileName = string.Join("_", fileName.Split(chArrInvalidPathChars)); fileName = downloadPath + "\\" + fileName + myFile.Extension; try { if (File.Exists(fileName)) { File.Delete(fileName); } myFile.MoveTo(fileName); dt.Rows[dtRowIndex][wagonPartsDataTable.fld_mapPicPath] = fileName; } catch (Exception ex) { } break; } } while (myFile.Extension == ".crdownload" || myFile.Extension == ".tmp" /*wait till .crdownload or .tmp to change to .pdf*/); } } } htmlRowIndex++; dtRowIndex++; } while (htmlRowIndex < rows.Count - dt.prp_skipRowBottom); }