Example #1
0
        public ChangeDescription ChangeYOnWell(IWell well, double NewValue)
        {
            ChangeDescription change = GetWellChange(well);

            change.ChangeValues.Add(new Change("YUTM", NewValue.ToString(), well.Y.ToString()));
            return(change);
        }
Example #2
0
        public ChangeDescription ChangeTerrainOnWell(IWell well, double NewValue)
        {
            ChangeDescription change = GetWellChange(well);

            change.ChangeValues.Add(new Change("ELEVATION", NewValue.ToString(), well.Terrain.ToString()));
            return(change);
        }
Example #3
0
        public ChangeDescription RemoveIntakeFromPlant(PumpingIntake Intake, Plant plant)
        {
            ChangeDescription change = GetGenericPlantIntake();
            int id;

            change.Action = TableAction.DeleteRow;

            change.ChangeValues.Add(new Change("PLANTID", "", plant.IDNumber.ToString()));
            change.ChangeValues.Add(new Change("BOREHOLENO", "", Intake.Intake.well.ID));
            change.ChangeValues.Add(new Change("INTAKENO", "", Intake.Intake.IDNumber.ToString()));

            if (Intake.StartNullable.HasValue)
            {
                change.ChangeValues.Add(new Change("STARTDATE", "", Intake.StartNullable.Value.ToShortDateString()));
            }

            if (Intake.EndNullable.HasValue)
            {
                change.ChangeValues.Add(new Change("ENDDATE", "", Intake.EndNullable.Value.ToShortDateString()));
            }

            if (DataBaseConnection.TryGetPrimaryID(Intake, plant, out id))
            {
                change.PrimaryKeys["INTAKEPLANTID"] = id.ToString();
            }

            return(change);
        }
Example #4
0
        public ChangeDescription ChangeStartDateOnPumpingIntake(PumpingIntake Intake, Plant plant, DateTime NewDate)
        {
            ChangeDescription change = GetGenericPlantIntake();

            int id;

            if (DataBaseConnection.TryGetPrimaryID(Intake, plant, out id))
            {
                change.PrimaryKeys["INTAKEPLANTID"] = id.ToString();
            }

            change.Action = TableAction.EditValue;

            if (Intake.StartNullable.HasValue)
            {
                change.ChangeValues.Add(new Change("STARTDATE", NewDate.ToShortDateString(), Intake.StartNullable.Value.ToShortDateString()));
            }
            else
            {
                change.ChangeValues.Add(new Change("STARTDATE", NewDate.ToShortDateString(), ""));
            }


            return(change);
        }
Example #5
0
        public ChangeDescription ChangeBottomOnScreen(Screen screen, double NewValue)
        {
            ChangeDescription Cd = GetScreenChange(screen);

            ChangeBottomOnScreen(Cd, screen, NewValue);
            return(Cd);
        }
Example #6
0
        public ChangeDescription ChangeTopOnScreen(Screen screen, double NewValue)
        {
            ChangeDescription Cd = GetScreenChange(screen);

            Cd.ChangeValues.Add(new Change("TOP", NewValue.ToString(), screen.DepthToTop.ToString()));
            return(Cd);
        }
Example #7
0
        public static IList <ICollection <string> > GetValidComments(ChangeDescription change)
        {
            List <ICollection <string> > comments = new List <ICollection <string> >();

            if (tables != null)
            {
                var el = tables.Element(change.Table.ToString());
                if (el != null)
                {
                    el = el.Element(change.Action.ToString());
                    if (el != null)
                    {
                        if (change.Action == TableAction.EditValue)
                        {
                            el = el.Element(change.ChangeValues.First().Column);
                        }

                        if (el != null)
                        {
                            foreach (var v in el.Elements("ValidComments"))
                            {
                                List <string> sublist = new List <string>();
                                foreach (var s in v.Elements("ValidComment"))
                                {
                                    sublist.Add(s.Value);
                                }

                                comments.Add(sublist);
                            }
                        }
                    }
                }
            }
            return(comments);
        }
    public static IList<ICollection<string>> GetValidComments(ChangeDescription change)
    {
      List<ICollection<string>> comments = new List<ICollection<string>>();

      if (tables != null)
      {
        var el = tables.Element(change.Table.ToString());
        if (el != null)
        {
          el = el.Element(change.Action.ToString());
          if (el != null)
          {
            if (change.Action == TableAction.EditValue)
            {
              el = el.Element(change.ChangeValues.First().Column);
            }

            if (el != null)
            {
              foreach (var v in el.Elements("ValidComments"))
              {
                List<string> sublist = new List<string>();
                foreach (var s in v.Elements("ValidComment"))
                  sublist.Add(s.Value);

                comments.Add(sublist);
              }
            }
          }
        }
      }
      return comments;
    }
 public ChangeDescription GetGenericPlantIntake()
 {
   ChangeDescription change = new ChangeDescription(JupiterTables.DRWPLANTINTAKE);
   change.User = UserName;
   change.Project = ProjectName;
   change.Action = TableAction.InsertRow;
   return change;
 }
Example #10
0
        public ChangeDescription GetGenericPlantIntake()
        {
            ChangeDescription change = new ChangeDescription(JupiterTables.DRWPLANTINTAKE);

            change.User    = UserName;
            change.Project = ProjectName;
            change.Action  = TableAction.InsertRow;
            return(change);
        }
Example #11
0
        public ChangeDescription NewScreen(Screen screen)
        {
            ChangeDescription change = GetScreenChange(screen);

            change.Action = TableAction.InsertRow;

            change.ChangeValues.Add(new Change("TOP", screen.DepthToTop.ToString(), ""));
            change.ChangeValues.Add(new Change("BOTTOM", screen.DepthToBottom.ToString(), ""));
            change.ChangeValues.Add(new Change("INTAKENO", screen.Intake.IDNumber.ToString(), ""));
            return(change);
        }
    private ChangeDescription GetWellChange(IWell well)
    {
      ChangeDescription change = new ChangeDescription(JupiterTables.BOREHOLE);
      change.User = UserName;
      change.Project = ProjectName;

      change.Action = TableAction.EditValue;

      change.PrimaryKeys["BOREHOLENO"] = well.ID;

      return change;
    }
Example #13
0
        private ChangeDescription GetWellChange(IWell well)
        {
            ChangeDescription change = new ChangeDescription(JupiterTables.BOREHOLE);

            change.User    = UserName;
            change.Project = ProjectName;

            change.Action = TableAction.EditValue;

            change.PrimaryKeys["BOREHOLENO"] = well.ID;

            return(change);
        }
Example #14
0
        public ChangeDescription GetScreenChange(Screen screen)
        {
            ChangeDescription change = new ChangeDescription(JupiterTables.SCREEN);

            change.User    = UserName;
            change.Project = ProjectName;

            change.Action = TableAction.EditValue;

            change.PrimaryKeys["BOREHOLENO"] = screen.Intake.well.ID;
            change.PrimaryKeys["SCREENNO"]   = screen.Number.ToString();

            return(change);
        }
Example #15
0
        public ChangeDescription GetRemoveWatlevel(IIntake intake, DateTime timeofmeasure)
        {
            ChangeDescription change = new ChangeDescription(JupiterTables.WATLEVEL);

            change.User    = UserName;
            change.Project = ProjectName;

            change.Action = TableAction.DeleteRow;

            change.PrimaryKeys.Add("BOREHOLENO", intake.well.ID);

            int WATLEVELNO;

            if (DataBaseConnection.TryGetPrimaryID(intake, timeofmeasure, out WATLEVELNO))
            {
                change.PrimaryKeys.Add("WATLEVELNO", WATLEVELNO.ToString());
            }

            return(change);
        }
Example #16
0
        public ChangeDescription AddIntakeToPlant(PumpingIntake Intake, Plant plant)
        {
            ChangeDescription change = GetGenericPlantIntake();

            change.Action = TableAction.InsertRow;

            change.ChangeValues.Add(new Change("PLANTID", plant.IDNumber.ToString(), ""));
            change.ChangeValues.Add(new Change("BOREHOLENO", Intake.Intake.well.ID, ""));
            change.ChangeValues.Add(new Change("INTAKENO", Intake.Intake.IDNumber.ToString(), ""));

            if (Intake.StartNullable.HasValue)
            {
                change.ChangeValues.Add(new Change("STARTDATE", Intake.StartNullable.Value.ToShortDateString(), ""));
            }

            if (Intake.EndNullable.HasValue)
            {
                change.ChangeValues.Add(new Change("ENDDATE", Intake.EndNullable.Value.ToShortDateString(), ""));
            }


            return(change);
        }
    public ChangeDescription GetRemoveWatlevel(IIntake intake, DateTime timeofmeasure)
    {
      ChangeDescription change = new ChangeDescription(JupiterTables.WATLEVEL);
      change.User = UserName;
      change.Project = ProjectName;

      change.Action = TableAction.DeleteRow;

      change.PrimaryKeys.Add("BOREHOLENO", intake.well.ID);

      int WATLEVELNO;
      if (DataBaseConnection.TryGetPrimaryID(intake, timeofmeasure, out WATLEVELNO))
        change.PrimaryKeys.Add("WATLEVELNO", WATLEVELNO.ToString());

      return change;
    }
    public ChangeDescriptionViewModel(ChangeDescription changeDescription)
    {
      this.changeDescription = changeDescription;

        foreach (var v in ValidComments)
          changeDescription.Comments.Add(v.First());

      //Make sure there is always a comment since the last one is used as free comment
        changeDescription.Comments.Add("");
    }
Example #19
0
 public void ChangeBottomOnScreen(ChangeDescription Cd, Screen screen, double NewValue)
 {
     Cd.ChangeValues.Add(new Change("BOTTOM", NewValue.ToString(), screen.DepthToBottom.ToString()));
 }
    /// <summary>
    /// Applies the change in the description to a plant or a well.
    /// Returns true if the change could be applied. 
    /// No checks on previous values or dates.
    /// </summary>
    /// <param name="plants"></param>
    /// <param name="wells"></param>
    /// <param name="cd"></param>
    /// <returns></returns>
    public bool ApplySingleChange(IPlantCollection plants, IWellCollection wells, ChangeDescription cd)
    {
      string wellid = "";
      int plantid;
      int intakeno = -1;

      IWell CurrentWell;

      bool succeded = false;

      switch (cd.Table)
      {
        case JupiterTables.BOREHOLE:
          wellid = cd.PrimaryKeys["BOREHOLENO"];
          if (wells.TryGetValue(wellid, out CurrentWell))
          {
            foreach (var c in cd.ChangeValues)
            {
              switch (c.Column.ToUpper())
              {
                case "XUTM":
                  CurrentWell.X = double.Parse(c.NewValue);
                  succeded = true;
                  break;
                case "YUTM":
                  CurrentWell.Y = double.Parse(c.NewValue);
                  succeded = true;
                  break;
                case "ELEVATION":
                  CurrentWell.Terrain = double.Parse(c.NewValue);
                  succeded = true;
                  break;
                default:
                  break;
              }
            }
          }
          break;
        case JupiterTables.SCREEN:
          wellid = cd.PrimaryKeys["BOREHOLENO"];
          if (wells.TryGetValue(wellid, out CurrentWell))
          {
            int screenNumber = int.Parse(cd.PrimaryKeys["SCREENNO"]);
            if (cd.Action == TableAction.EditValue)
            {
              var screen = CurrentWell.Intakes.SelectMany(var => var.Screens).FirstOrDefault(var2 => var2.Number == screenNumber);
              if (screen != null)
              {
                foreach (var cv in cd.ChangeValues)
                {
                  if (cv.Column == "TOP")
                    screen.DepthToTop = double.Parse(cv.NewValue);
                  else if (cv.Column == "BOTTOM")
                    screen.DepthToBottom = double.Parse(cv.NewValue);
                  succeded = true;
                }
              }
            }
            else if (cd.Action == TableAction.InsertRow)
            {
              intakeno = int.Parse(cd.ChangeValues.Single(var => var.Column == "INTAKENO").NewValue);
              IIntake CurrentIntake = CurrentWell.Intakes.Single(var => var.IDNumber == intakeno);
              if (CurrentIntake != null)
              {
                Screen sc = new Screen(CurrentIntake);
                sc.DepthToTop = double.Parse(cd.ChangeValues.Single(var => var.Column == "TOP").NewValue);
                sc.DepthToBottom = double.Parse(cd.ChangeValues.Single(var => var.Column == "BOTTOM").NewValue);
                succeded = true;
              }
            }
          }
          break;
        case JupiterTables.DRWPLANTINTAKE:
          if (cd.Action == TableAction.EditValue || cd.Action == TableAction.DeleteRow)
          {
            int tableid;
            if (int.TryParse(cd.PrimaryKeys.First().Value, out tableid))
            {
              if (DataBaseConnection.TryGetPlant(tableid, out plantid, out wellid, out intakeno))
                succeded = true;
            }
            else //No ID Change of a change
            {
              if (cd.Action == TableAction.EditValue)
              {
                if (int.TryParse(cd.ChangeValues[0].NewValue, out plantid))
                {
                  wellid = cd.ChangeValues[1].NewValue;
                  if (int.TryParse(cd.ChangeValues[2].NewValue, out intakeno))
                    succeded = true;
                }
              }
              else
                if (int.TryParse(cd.ChangeValues[0].OldValue, out plantid))
                {
                  wellid = cd.ChangeValues[1].OldValue;
                  if (int.TryParse(cd.ChangeValues[2].OldValue, out intakeno))
                    succeded = true;
                }

            }

            if (succeded)
            {
              var pi = plants[plantid].PumpingIntakes.FirstOrDefault(var => var.Intake.well.ID == wellid & var.Intake.IDNumber == intakeno);

              if (pi != null)
              {
                if (cd.Action == TableAction.DeleteRow)
                  plants[plantid].PumpingIntakes.Remove(pi);
                else
                {
                  var start = cd.ChangeValues.SingleOrDefault(var => var.Column == "STARTDATE");
                  if (start != null)
                    pi.StartNullable = DateTime.Parse(start.NewValue);
                  var end = cd.ChangeValues.SingleOrDefault(var => var.Column == "ENDDATE");
                  if (end != null)
                    pi.EndNullable = DateTime.Parse(end.NewValue);
                }
                succeded = true;
              }
            }
          }
          else //insertrow
          {
            plantid = int.Parse(cd.ChangeValues.First(var => var.Column == "PLANTID").NewValue);
            Plant p;
            if (plants.TryGetValue(plantid, out p))
            {
              wellid = cd.ChangeValues.First(var => var.Column == "BOREHOLENO").NewValue;
              IWell w;
              if (wells.TryGetValue(wellid, out w))
              {
                intakeno = int.Parse(cd.ChangeValues.First(var => var.Column == "INTAKENO").NewValue);
                IIntake I = w.Intakes.First(var => var.IDNumber == intakeno);
                if (I != null)
                {
                  PumpingIntake pi = new PumpingIntake(I, p);
                  var s = cd.ChangeValues.FirstOrDefault(var => var.Column == "STARTDATE");
                  if (s != null)
                    pi.StartNullable = DateTime.Parse(s.NewValue);
                  s = cd.ChangeValues.FirstOrDefault(var => var.Column == "ENDDATE");
                  if (s != null)
                    pi.EndNullable = DateTime.Parse(s.NewValue);
                  p.PumpingIntakes.Add(pi);
                  succeded = true;
                }
              }
            }
          }
          break;
        case JupiterTables.WATLEVEL:
          wellid = cd.PrimaryKeys["BOREHOLENO"];
          if (wells.TryGetValue(wellid, out CurrentWell))
          {
            DateTime TimeOfMeasure;
            int WatlevelNo = int.Parse(cd.PrimaryKeys["WATLEVELNO"]);
            if (DataBaseConnection.TryGetIntakeNoTimeOfMeas(CurrentWell, WatlevelNo, out intakeno, out TimeOfMeasure))
            {
              IIntake CurrentIntake = CurrentWell.Intakes.SingleOrDefault(var => var.IDNumber == intakeno);
              if (CurrentIntake != null)
              {
                var item = CurrentIntake.HeadObservations.Items.FirstOrDefault(var => var.Time == TimeOfMeasure);
                if (item != null)
                {
                  CurrentIntake.HeadObservations.Items.Remove(item);
                  succeded = true;
                }
              }
            }
          }
          break;

        default:
          break;
      }
      return succeded;
    }
Example #21
0
        /// <summary>
        /// Applies the change in the description to a plant or a well.
        /// Returns true if the change could be applied.
        /// No checks on previous values or dates.
        /// </summary>
        /// <param name="plants"></param>
        /// <param name="wells"></param>
        /// <param name="cd"></param>
        /// <returns></returns>
        public bool ApplySingleChange(IPlantCollection plants, IWellCollection wells, ChangeDescription cd)
        {
            string wellid = "";
            int    plantid;
            int    intakeno = -1;

            IWell CurrentWell;

            bool succeded = false;

            switch (cd.Table)
            {
            case JupiterTables.BOREHOLE:
                wellid = cd.PrimaryKeys["BOREHOLENO"];
                if (wells.TryGetValue(wellid, out CurrentWell))
                {
                    foreach (var c in cd.ChangeValues)
                    {
                        switch (c.Column.ToUpper())
                        {
                        case "XUTM":
                            CurrentWell.X = double.Parse(c.NewValue);
                            succeded      = true;
                            break;

                        case "YUTM":
                            CurrentWell.Y = double.Parse(c.NewValue);
                            succeded      = true;
                            break;

                        case "ELEVATION":
                            CurrentWell.Terrain = double.Parse(c.NewValue);
                            succeded            = true;
                            break;

                        default:
                            break;
                        }
                    }
                }
                break;

            case JupiterTables.SCREEN:
                wellid = cd.PrimaryKeys["BOREHOLENO"];
                if (wells.TryGetValue(wellid, out CurrentWell))
                {
                    int screenNumber = int.Parse(cd.PrimaryKeys["SCREENNO"]);
                    if (cd.Action == TableAction.EditValue)
                    {
                        var screen = CurrentWell.Intakes.SelectMany(var => var.Screens).FirstOrDefault(var2 => var2.Number == screenNumber);
                        if (screen != null)
                        {
                            foreach (var cv in cd.ChangeValues)
                            {
                                if (cv.Column == "TOP")
                                {
                                    screen.DepthToTop = double.Parse(cv.NewValue);
                                }
                                else if (cv.Column == "BOTTOM")
                                {
                                    screen.DepthToBottom = double.Parse(cv.NewValue);
                                }
                                succeded = true;
                            }
                        }
                    }
                    else if (cd.Action == TableAction.InsertRow)
                    {
                        intakeno = int.Parse(cd.ChangeValues.Single(var => var.Column == "INTAKENO").NewValue);
                        IIntake CurrentIntake = CurrentWell.Intakes.Single(var => var.IDNumber == intakeno);
                        if (CurrentIntake != null)
                        {
                            Screen sc = new Screen(CurrentIntake);
                            sc.DepthToTop    = double.Parse(cd.ChangeValues.Single(var => var.Column == "TOP").NewValue);
                            sc.DepthToBottom = double.Parse(cd.ChangeValues.Single(var => var.Column == "BOTTOM").NewValue);
                            succeded         = true;
                        }
                    }
                }
                break;

            case JupiterTables.DRWPLANTINTAKE:
                if (cd.Action == TableAction.EditValue || cd.Action == TableAction.DeleteRow)
                {
                    int tableid;
                    if (int.TryParse(cd.PrimaryKeys.First().Value, out tableid))
                    {
                        if (DataBaseConnection.TryGetPlant(tableid, out plantid, out wellid, out intakeno))
                        {
                            succeded = true;
                        }
                    }
                    else //No ID Change of a change
                    {
                        if (cd.Action == TableAction.EditValue)
                        {
                            if (int.TryParse(cd.ChangeValues[0].NewValue, out plantid))
                            {
                                wellid = cd.ChangeValues[1].NewValue;
                                if (int.TryParse(cd.ChangeValues[2].NewValue, out intakeno))
                                {
                                    succeded = true;
                                }
                            }
                        }
                        else
                        if (int.TryParse(cd.ChangeValues[0].OldValue, out plantid))
                        {
                            wellid = cd.ChangeValues[1].OldValue;
                            if (int.TryParse(cd.ChangeValues[2].OldValue, out intakeno))
                            {
                                succeded = true;
                            }
                        }
                    }

                    if (succeded)
                    {
                        var pi = plants[plantid].PumpingIntakes.FirstOrDefault(var => var.Intake.well.ID == wellid & var.Intake.IDNumber == intakeno);

                        if (pi != null)
                        {
                            if (cd.Action == TableAction.DeleteRow)
                            {
                                plants[plantid].PumpingIntakes.Remove(pi);
                            }
                            else
                            {
                                var start = cd.ChangeValues.SingleOrDefault(var => var.Column == "STARTDATE");
                                if (start != null)
                                {
                                    pi.StartNullable = DateTime.Parse(start.NewValue);
                                }
                                var end = cd.ChangeValues.SingleOrDefault(var => var.Column == "ENDDATE");
                                if (end != null)
                                {
                                    pi.EndNullable = DateTime.Parse(end.NewValue);
                                }
                            }
                            succeded = true;
                        }
                    }
                }
                else //insertrow
                {
                    plantid = int.Parse(cd.ChangeValues.First(var => var.Column == "PLANTID").NewValue);
                    Plant p;
                    if (plants.TryGetValue(plantid, out p))
                    {
                        wellid = cd.ChangeValues.First(var => var.Column == "BOREHOLENO").NewValue;
                        IWell w;
                        if (wells.TryGetValue(wellid, out w))
                        {
                            intakeno = int.Parse(cd.ChangeValues.First(var => var.Column == "INTAKENO").NewValue);
                            IIntake I = w.Intakes.First(var => var.IDNumber == intakeno);
                            if (I != null)
                            {
                                PumpingIntake pi = new PumpingIntake(I, p);
                                var           s  = cd.ChangeValues.FirstOrDefault(var => var.Column == "STARTDATE");
                                if (s != null)
                                {
                                    pi.StartNullable = DateTime.Parse(s.NewValue);
                                }
                                s = cd.ChangeValues.FirstOrDefault(var => var.Column == "ENDDATE");
                                if (s != null)
                                {
                                    pi.EndNullable = DateTime.Parse(s.NewValue);
                                }
                                p.PumpingIntakes.Add(pi);
                                succeded = true;
                            }
                        }
                    }
                }
                break;

            case JupiterTables.WATLEVEL:
                wellid = cd.PrimaryKeys["BOREHOLENO"];
                if (wells.TryGetValue(wellid, out CurrentWell))
                {
                    DateTime TimeOfMeasure;
                    int      WatlevelNo = int.Parse(cd.PrimaryKeys["WATLEVELNO"]);
                    if (DataBaseConnection.TryGetIntakeNoTimeOfMeas(CurrentWell, WatlevelNo, out intakeno, out TimeOfMeasure))
                    {
                        IIntake CurrentIntake = CurrentWell.Intakes.SingleOrDefault(var => var.IDNumber == intakeno);
                        if (CurrentIntake != null)
                        {
                            var item = CurrentIntake.HeadObservations.Items.FirstOrDefault(var => var.Time == TimeOfMeasure);
                            if (item != null)
                            {
                                CurrentIntake.HeadObservations.Items.Remove(item);
                                succeded = true;
                            }
                        }
                    }
                }
                break;

            default:
                break;
            }
            return(succeded);
        }
 public void ChangeBottomOnScreen(ChangeDescription Cd, Screen screen, double NewValue)
 {
   Cd.ChangeValues.Add(new Change("BOTTOM", NewValue.ToString(), screen.DepthToBottom.ToString()));
 }
    public ChangeDescription GetScreenChange(Screen screen)
    {
      ChangeDescription change = new ChangeDescription(JupiterTables.SCREEN);
      change.User = UserName;
      change.Project = ProjectName;

      change.Action = TableAction.EditValue;

      change.PrimaryKeys["BOREHOLENO"] = screen.Intake.well.ID;
      change.PrimaryKeys["SCREENNO"] = screen.Number.ToString();

      return change;
    }