public RawDataWindow(PacerImportTransaction _transaction)
        {
            InitializeComponent();

            if (_transaction != null)
            {
                this._pITransaction   = _transaction;
                txtCourtName.Text     = _pITransaction.CourtName;
                txtBillablePages.Text = _pITransaction.BillablePages.ToString();
                txtCost.Text          = _pITransaction.Cost.ToString("c");
                txtTimestamp.Text     = _pITransaction.DownloadTimeStamp.ToLongTimeString();
                txtStartDate.Text     = _pITransaction.StartDate.ToShortDateString();
                txtEndDate.Text       = _pITransaction.EndDate.ToShortDateString();
                txtLines.Text         = _pITransaction.LineCount.ToString();
                txtUniqueCases.Text   = _pITransaction.TotalCases.ToString();
                txtImportStatus.Text  = _pITransaction.ImportStatus;

                try
                {
                    // Read the file as one string.
                    System.IO.StreamReader myFile = new System.IO.StreamReader(_pITransaction.FilePath);
                    txtRawData.Text = myFile.ReadToEnd();
                    myFile.Close();
                }
                catch (IOException e)
                {
                    // Let the user know what went wrong.
                    txtRawData.Text = "The original raw data file was not found and may have been moved/removed from the directory!";
                }

                GridViewLineItems.ItemsSource = PacerImportDataService.GetForImportTransaction(_pITransaction.ID);

                GridViewBankruptcyCases.ItemsSource = BankruptcyCaseService.GetFiltered(_pITransaction.ID.ToString(), string.Empty, string.Empty, string.Empty, 0, string.Empty, false);

                Mouse.OverrideCursor = Cursors.Arrow;
            }
        }
        public bool Reprocess(bool GeoCodeAddresses)
        {
            //ceck if we've established conection and queried for the data

            if (this.FilePath.Length > 0)
            {
                try
                {
                    // Read the file as one string.
                    System.IO.StreamReader myFile = new System.IO.StreamReader(this.FilePath);
                    string _rawData = myFile.ReadToEnd();
                    myFile.Close();

                    if (_rawData == null || _rawData.Length == 0)
                    {
                        _importStatus = "NO DATA";
                        return(false);
                    }

                    //delete all imported data but don;t bother deleting bankruptcy case data as it will get written over
                    //if already exists
                    PacerImportDataService.DeleteForTransaction(this.ID);

                    //get the court
                    //Court _court = CourtService.GetByID(this.CourtID);
                    //this.PacerFileFormatID = _format.ID;

                    PacerFileFormat _format = PacerFileFormatService.GetByID(this.PacerFileFormatID);

                    //on a reprocess we use the current format for the court
                    if (BRGCaseMailServer.PacerImportTransactionService.ProcessManualImportTransaction(this, _format) == true)
                    {
                        //process imported lines
                        int rows = PacerImportTransactionService.ProcessImportedLineItems(this, GeoCodeAddresses);
                        if (_court == null)
                        {
                            _court = CourtService.GetByID(this.CourtID);
                        }
                        if (this._dischargedCases == true)
                        {
                            _court.LastPacerLoadDischargeDate = this.EndDate;
                        }
                        else
                        {
                            _court.LastPacerLoadFileDate = this.EndDate;
                        }

                        CourtService.Save((Court)_court);
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                catch (Exception ex)
                {
                    this.ImportMessage = ex.Message;
                    this.ImportStatus  = "FAILURE";
                    PacerImportTransactionService.Save(this);
                    return(false);
                }
            }
            else
            {
                PacerImportTransactionService.Save(this);
                return(false); //end   if (_status == true || _result != null)
            }
        }
        static public int ProcessImportedLineItems(PacerImportTransaction objPacerImportTransaction, bool GeocodeLocations)
        {
            List <PacerImportData> _data        = PacerImportDataService.GetForImportTransaction(objPacerImportTransaction.ID);
            PacerImportData        _previousRow = null;
            int insertedRowCount = 0;
            int updatedRowCount  = 0;
            int formatErrors     = 0;

            string StateCode = null;

            foreach (PacerImportData _row in _data)
            {
                if (_previousRow == null)
                {
                    //first row - is this row a debtor  - if this row fails we just exit with failure because the
                    //file format is most likely incorrect.
                    if (((_row.PartyCaseRole.ToUpper() == "DEBTOR") || (_row.PartyCaseRole.ToUpper() == "CO-DEBTOR") || (_row.PartyCaseRole.ToUpper() == "JOINT DEBTOR")) && _row.CareOfOK)
                    {
                        _row.Imported = true;
                        PacerImportDataService.Save(_row);
                        try
                        {
                            BankruptcyCase _case = new BankruptcyCase(_row);

                            Debug.WriteLine(_case.CaseNumber4Digit);
                            if (GeocodeLocations)
                            {
                                YahooGeoCoder.GeocodeCase(_case);
                            }
                            _case.IsModified = true;

                            int returnvalue = BankruptcyCaseService.Save(_case, true);

                            if (returnvalue == 1)
                            {
                                insertedRowCount++;
                            }
                            else if (returnvalue == 2)
                            {
                                updatedRowCount++;
                            }
                        }
                        catch (Exception ex)
                        {
                            formatErrors++;
                        }
                    }
                    _previousRow = _row;
                }
                else //previousrow != null  if this row fails we do not exit with failure because the
                // it's just a bad row.
                {
                    if (_row.PartyAddressLine1 != _previousRow.PartyAddressLine1 && ((_row.PartyCaseRole.ToUpper() == "DEBTOR") || (_row.PartyCaseRole.ToUpper() == "CO-DEBTOR") || (_row.PartyCaseRole.ToUpper() == "JOINT DEBTOR")) && _row.CareOfOK)
                    {
                        try
                        {
                            //debtor at different address
                            _row.Imported = true;
                            PacerImportDataService.Save(_row);

                            BankruptcyCase _case = new BankruptcyCase(_row);

                            if (GeocodeLocations)
                            {
                                YahooGeoCoder.GeocodeCase(_case);
                            }
                            if (insertedRowCount == 318)
                            {
                                Debug.WriteLine(_case.CaseNumber4Digit);
                            }
                            if (_case.LastName == "Babakatis")
                            {
                                Debug.WriteLine(_case.CaseNumber4Digit);
                            }
                            _case.IsModified = true;
                            int returnvalue = BankruptcyCaseService.Save(_case, true);

                            if (returnvalue == 1)
                            {
                                insertedRowCount++;
                                if (insertedRowCount == 1654)
                                {
                                    Debug.WriteLine(insertedRowCount);
                                }
                            }
                            else if (returnvalue == 2)
                            {
                                updatedRowCount++;
                            }
                        }
                        catch (Exception e)
                        {
                            formatErrors++;
                        }
                    }

                    _previousRow = _row;
                }
            }

            // update counts for
            objPacerImportTransaction.InsertedCases = insertedRowCount;
            objPacerImportTransaction.LineCount     = _data.Count;
            objPacerImportTransaction.TotalCases    = insertedRowCount + updatedRowCount;
            if (objPacerImportTransaction.ImportMessage.Length > 0)
            {
                //we already have an import string - parse the result to add the previous total
                try
                {
                    if (objPacerImportTransaction.ImportMessage.IndexOf("Unique Cases Added") > 0)
                    {
                        int previoustotal = Int32.Parse(objPacerImportTransaction.ImportMessage.Substring(0, objPacerImportTransaction.ImportMessage.IndexOf("Unique Cases Added") - 1));
                        objPacerImportTransaction.ImportMessage = previoustotal + insertedRowCount + " Unique Cases Added!  " + updatedRowCount + " Cases Updated!  " + formatErrors + " format Errors.";
                    }
                    else
                    {
                        objPacerImportTransaction.ImportMessage = insertedRowCount + " Unique Cases Added!  " + updatedRowCount + " Cases Updated!  " + formatErrors + " format Errors.";
                    }
                }
                catch
                {
                }
            }
            else
            {
                objPacerImportTransaction.ImportMessage = insertedRowCount + " Unique Cases Added!  " + updatedRowCount + " Cases Updated!  " + formatErrors + " format Errors.";
            }
            objPacerImportTransaction.ImportStatus = "SUCCESS";
            Save(objPacerImportTransaction);

            Court _court = CourtService.GetByID(objPacerImportTransaction.CourtID);

            ZipGeoCodeService.UpdateStatsForState(_court.StateCode);
            return(insertedRowCount);
        }