Пример #1
0
 /// <summary>
 /// Show a list of further actions (including copying the guid)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GUIDButton_Clicked(object sender, EventArgs e)
 {
     Device.BeginInvokeOnMainThread(async() =>
     {
         string formAction = await DisplayActionSheet("Optionen", "Abbrechen", null, "Geometrie entfernen", "GUID Kopieren", "Geometriename editieren");
         if (formAction == "Geometrie entfernen")
         {
             DeleteButton_Clicked(sender, e);
         }
         else if (formAction == "GUID Kopieren")
         {
             GroupedFormRec formRec = ((Button)sender).BindingContext as GroupedFormRec;
             var geom  = formRec.Geom;
             var extId = geom.geometryId;
             ViewModel.CopyGUID(extId);
             await DisplayAlert("BDC GUID kopiert", "", "OK");
         }
         else if (formAction == "Geometriename editieren")
         {
             GroupedFormRec formRec = ((Button)sender).BindingContext as GroupedFormRec;
             var geom          = formRec.Geom;
             string newName    = await DisplayPromptAsync("Geometriename", "Editieren Sie bitte der Geometriename", accept: "OK", cancel: "Abbrechen", initialValue: geom.geometryName, keyboard: Keyboard.Text);
             geom.geometryName = newName;
             geom.timestamp    = DateTime.Now;
             if (geom.status != -1)
             {
                 geom.status = 2;
             }
             ReferenceGeometry.SaveGeometry(geom);
             ViewModel.UpdateRecords();
         }
     });
 }
Пример #2
0
        /// <summary>
        /// Delete a geometry
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void DeleteButton_Clicked(object sender, EventArgs e)
        {
            string formAction = await DisplayActionSheet("Möchten Sie diese Geometrie vom Gerät entfernen?", "Abbrechen", "Entfernen");

            if (formAction == "Entfernen")
            {
                GroupedFormRec formRec = ((Button)sender).BindingContext as GroupedFormRec;
                var            geom    = formRec.Geom;
                if (ViewModel.Object_pk == geom.Id)
                {
                    ViewModel.Object_pk = null;
                }
                ReferenceGeometry.DeleteGeometry(geom.Id);
            }
        }
Пример #3
0
        public void ListRecordsByGeometry(Project project)
        {
            try
            {
                var longName  = string.Empty;
                var shortName = string.Empty;
                using (SQLiteConnection conn = new SQLiteConnection(Preferences.Get("databaseLocation", "")))
                {
                    //SORT BY GEOMETRY CASE

                    //No Geometry

                    var nogroup = new GroupedFormRec()
                    {
                        LongGeomName = "Allgemeine Beobachtungen", ShortGeomName = "Allgemein", ShowButton = false
                    };
                    var norecList = new List <FormRec>();

                    norecList = (from record in conn.Table <Record>().Where(ReferenceGeometry => ReferenceGeometry.geometry_fk == null).Where(Record => Record.project_fk == project.Id).Where(Record => Record.status < 3).ToList()
                                 join form in conn.Table <Form>().ToList()
                                 on record.formId equals form.formId
                                 select new FormRec {
                        Timestamp = record.timestamp.ToString("g", CultureInfo.CreateSpecificCulture("de-DE")), Title = form.title, FormType = form.title, FormId = record.formId, RecId = record.Id, User = record.fullUserName
                    }).ToList();

                    foreach (var rec in norecList)
                    {
                        var title = CreateTitleStringForRecord(rec);
                        if (title != String.Empty && title != " ")
                        {
                            rec.Title = title;
                        }
                        else
                        {
                            rec.Title = rec.FormType;
                        }
                        var prev = nogroup.Select(p => p.RecId == rec.RecId).ToList();
                        if (!prev.Contains(true))
                        {
                            if (rec != null)
                            {
                                nogroup.Add(rec);
                            }
                        }
                    }
                    if (nogroup != null)
                    {
                        RecordsByGeometry.Add(nogroup);
                    }


                    //For each geometry
                    var geoms     = new List <ReferenceGeometry>();
                    var geomsTemp = new List <ReferenceGeometry>();
                    geomsTemp = conn.Table <ReferenceGeometry>().Where(ReferenceGeometry => ReferenceGeometry.project_fk == project.Id).Where(ReferenceGeometry => ReferenceGeometry.status < 3).ToList();
                    geoms     = geomsTemp.OrderBy(o => o.geometryName).ToList();

                    foreach (var geom in geoms)
                    {
                        var geomName = geom.geometryName ?? String.Empty;
                        Int32.TryParse(geom.geometryId, out int geomId);
                        var group = new GroupedFormRec()
                        {
                            LongGeomName = geomName, ShortGeomName = geomName, GeomId = geom.Id, ShowButton = true, Geom = geom
                        };
                        var recList = new List <FormRec>();

                        recList = (from record in conn.Table <Record>().Where(ReferenceGeometry => ReferenceGeometry.geometry_fk == geom.Id).Where(Record => Record.status < 3).ToList()
                                   join form in conn.Table <Form>().Where(f => f.project_fk == project.Id).ToList()
                                   on record.formId equals form.formId
                                   join referenceGeometry in conn.Table <ReferenceGeometry>().Where(ReferenceGeometry => ReferenceGeometry.Id == geom.Id).Where(ReferenceGeometry => ReferenceGeometry.project_fk == project.Id).ToList()
                                   on record.geometry_fk equals referenceGeometry.Id
                                   select new FormRec {
                            Timestamp = record.timestamp.ToString("g", CultureInfo.CreateSpecificCulture("de-DE")), Title = form.title, FormType = form.title, FormId = record.formId, RecId = record.Id, User = record.fullUserName, GeometryName = geomName, GeomId = referenceGeometry.Id
                        }).ToList();

                        foreach (var rec in recList)
                        {
                            var title = CreateTitleStringForRecord(rec);
                            if (title != String.Empty && title != " ")
                            {
                                rec.Title = title;
                            }
                            else
                            {
                                rec.Title = rec.FormType;
                            }
                            if (rec != null)
                            {
                                group.Add(rec);
                            }
                        }
                        if (group != null)
                        {
                            RecordsByGeometry.Add(group);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Пример #4
0
        /// <summary>
        /// Based on the current sorting and filtering methods, read the groups into which the records should be sorted, then read the records associated with each of these groups. When reading the records, we also need to know their associated forms and geometries
        /// </summary>
        public void UpdateRecords()
        {
            Activity = true;
            var recs = new List <GroupedFormRec>();

            if (recs != null && SortBy != "Formulartyp")
            {
                if (FilterBy == "Formulartyp")
                {
                    var frm = Form.FetchForm((int)Form_pk);
                    foreach (var group in App.RecordLists.RecordsByGeometry)
                    {
                        var newGroup = new GroupedFormRec();
                        newGroup.LongGeomName  = group.LongGeomName;
                        newGroup.ShortGeomName = group.ShortGeomName;
                        newGroup.GeomId        = group.GeomId;
                        newGroup.ShowButton    = group.ShowButton;
                        newGroup.Geom          = group.Geom;

                        foreach (FormRec form in group)
                        {
                            if (form.FormId == frm.formId)
                            {
                                newGroup.Add(form);
                            }
                        }
                        recs.Add(newGroup);
                    }
                }

                else if (FilterBy == "Geometrie" && Object_pk != null)
                {
                    var obj = ReferenceGeometry.GetGeometry((int)Object_pk);
                    foreach (var group in App.RecordLists.RecordsByGeometry)
                    {
                        try
                        {
                            if (group.GeomId == obj.Id)
                            {
                                recs.Add(group);
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                        }
                    }
                }
                else
                {
                    recs = App.RecordLists.RecordsByGeometry;
                }
                Records = new ObservableCollection <GroupedFormRec>(recs);
            }
            else if (recs != null && SortBy == "Formulartyp")
            {
                if (FilterBy == "Formulartyp")
                {
                    var frm = Form.FetchForm((int)Form_pk);
                    foreach (var group in App.RecordLists.RecordsByForm)
                    {
                        var newGroup = new GroupedFormRec();
                        newGroup.LongGeomName  = group.LongGeomName;
                        newGroup.ShortGeomName = group.ShortGeomName;
                        newGroup.GeomId        = group.GeomId;
                        newGroup.ShowButton    = group.ShowButton;
                        newGroup.Geom          = group.Geom;

                        foreach (FormRec form in group)
                        {
                            if (form.FormId == frm.formId)
                            {
                                newGroup.Add(form);
                            }
                        }
                        recs.Add(newGroup);
                    }
                }
                else if (FilterBy == "Geometrie" && Object_pk != null)
                {
                    var obj = ReferenceGeometry.GetGeometry((int)Object_pk);
                    foreach (var group in App.RecordLists.RecordsByForm)
                    {
                        var newGroup = new GroupedFormRec();
                        newGroup.LongGeomName  = group.LongGeomName;
                        newGroup.ShortGeomName = group.ShortGeomName;
                        newGroup.GeomId        = group.GeomId;
                        newGroup.ShowButton    = group.ShowButton;
                        newGroup.Geom          = group.Geom;

                        foreach (FormRec form in group)
                        {
                            if (form.GeomId == obj.Id)
                            {
                                newGroup.Add(form);
                            }
                        }
                        recs.Add(newGroup);
                    }
                }
                else
                {
                    recs = App.RecordLists.RecordsByForm;
                }
                Records = new ObservableCollection <GroupedFormRec>(recs);
            }
            else
            {
                Records = new ObservableCollection <GroupedFormRec>();
            }

            OnPropertyChanged("Records");
            Activity = false;
        }
Пример #5
0
        public void ListRecordsByForm(Project project)
        {
            try
            {
                var longName  = string.Empty;
                var shortName = string.Empty;
                using (SQLiteConnection conn = new SQLiteConnection(Preferences.Get("databaseLocation", "")))
                {
                    //SORT BY FORM TYPE CASE
                    var forms = new List <Form>();

                    var formsTemp = conn.Table <Form>().Where(Form => Form.project_fk == project.Id).ToList();
                    forms = formsTemp.OrderBy(o => o.title).ToList();


                    //For each form

                    foreach (var formgr in forms)
                    {
                        var group = new GroupedFormRec()
                        {
                            LongGeomName = formgr.title ?? "", ShortGeomName = formgr.title ?? "", ShowButton = false
                        };
                        var recList       = new List <FormRec>();
                        var recListNoGeom = new List <FormRec>();

                        recList = (from record in conn.Table <Record>().Where(Record => Record.formId == formgr.formId).Where(Record => Record.status < 3).Where(Record => Record.project_fk == project.Id).ToList()
                                   join form in conn.Table <Form>().Where(Form => Form.project_fk == project.Id).Where(Form => Form.title == formgr.title).ToList()
                                   on record.formId equals form.formId
                                   join referenceGeometry in conn.Table <ReferenceGeometry>().Where(ReferenceGeometry => ReferenceGeometry.project_fk == project.Id).ToList()
                                   on record.geometry_fk equals referenceGeometry.Id
                                   select new FormRec {
                            Timestamp = record.timestamp.ToString("g", CultureInfo.CreateSpecificCulture("de-DE")), Title = form.title, FormType = form.title, FormId = form.formId, RecId = record.Id, User = record.fullUserName, GeometryName = referenceGeometry.geometryName, GeomId = referenceGeometry.Id
                        }).ToList();
                        recListNoGeom = (from record in conn.Table <Record>().Where(Record => Record.formId == formgr.formId).Where(Record => Record.status < 3).Where(Record => Record.geometry_fk == null).Where(Record => Record.project_fk == project.Id).ToList()
                                         join form in conn.Table <Form>().Where(Form => Form.project_fk == project.Id).Where(Form => Form.title == formgr.title).ToList()
                                         on record.formId equals form.formId
                                         select new FormRec {
                            Timestamp = record.timestamp.ToString("g", CultureInfo.CreateSpecificCulture("de-DE")), Title = form.title, FormType = form.title, FormId = form.formId, RecId = record.Id, User = record.fullUserName, GeometryName = String.Empty
                        }).ToList();


                        foreach (var rec in recListNoGeom)
                        {
                            var title = CreateTitleStringForRecord(rec);
                            if (title != String.Empty && title != " ")
                            {
                                rec.Title = title;
                            }
                            else
                            {
                                rec.Title = rec.FormType;
                            }
                            if (rec != null)
                            {
                                group.Add(rec);
                            }
                        }
                        foreach (var rec in recList)
                        {
                            var title = CreateTitleStringForRecord(rec);
                            if (title != String.Empty && title != " ")
                            {
                                rec.Title = title;
                            }
                            else
                            {
                                rec.Title = rec.FormType;
                            }
                            if (rec != null)
                            {
                                group.Add(rec);
                            }
                        }
                        if (group != null)
                        {
                            RecordsByForm.Add(group);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }