예제 #1
0
        public List <Wohnung> LoadWohnungen()
        {
            bool wasOpen = connection.State == System.Data.ConnectionState.Open;

            if (!wasOpen)
            {
                connection.Open();
            }
            List <Wohnung> retval = new List <Wohnung>();

            using (MySqlCommand cmd = new MySqlCommand(SqlConstants.SQL_LoadWohnungen, connection))
            {
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Wohnung w = new Wohnung();
                        w.FromReader(reader);
                        retval.Add(w);
                    }
                }
            }
            if (!wasOpen)
            {
                connection.Clone();
            }
            return(retval);
        }
예제 #2
0
        /// <summary>
        /// Lädt alle Räume einer Wohnung
        /// </summary>
        /// <param name="wohnung"></param>
        /// <returns></returns>
        public List <Raum> LoadRaeume(Wohnung wohnung)
        {
            bool wasOpen = connection.State == System.Data.ConnectionState.Open;

            if (!wasOpen)
            {
                connection.Open();
            }
            List <Raum> retval = new List <Raum>();

            wohnung.Raeume.Clear();

            using (MySqlCommand cmd = new MySqlCommand(SqlConstants.SQL_LoadRaeume, connection))
            {
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Raum raum = new Raum();
                        raum.FromReader(reader);
                        if (raum.WohnungID == wohnung.WohnungID)
                        {
                            //raum.Wohnung = wohnung;
                            wohnung.Raeume.Add(raum);
                            retval.Add(raum);
                        }
                    }
                }
            }
            if (!wasOpen)
            {
                connection.Clone();
            }
            return(retval);
        }
 public async Task <IActionResult> ErstellenOderBearbeiten(int?id, [Bind("Id,Beschreibung,Strasse,Postleitzahl,Ort,IstInaktiv")] Wohnung wohnung)
 {
     if (ModelState.IsValid)
     {
         if (id == null || id == 0)
         {
             context.Wohnungen.Add(wohnung);
             await context.SaveChangesAsync();
         }
         else
         {
             try
             {
                 context.Wohnungen.Update(wohnung);
                 await context.SaveChangesAsync();
             }
             catch (DbUpdateConcurrencyException)
             {
                 if (!context.Wohnungen.Any(w => w.Id == wohnung.Id))
                 {
                     return(NotFound());
                 }
                 else
                 {
                     throw;
                 }
             }
         }
         // Um im JQuery Script zu unterscheiden, ob die Anfrage gültig ist, Json-Objekt erstellen, mit Gültigkeit und View als Html-String
         return(Json(new { isValid = true, html = Helper.RenderRazorViewToString(this, "_WohnungsUebersicht", context.Wohnungen.Where(w => w.IstInaktiv == false)) }));
     }
     return(Json(new { isValid = false, html = Helper.RenderRazorViewToString(this, "ErstellenOderBearbeiten", wohnung) }));
 }
예제 #4
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,Bezeichnung,Straße,PLZ,Ort,IstInaktiv")] Wohnung wohnung)
        {
            if (id != wohnung.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(wohnung);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!WohnungExists(wohnung.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(wohnung));
        }
 public WohnungTreeViewItem(Wohnung dataModel) : base(dataModel)
 {
     dataModel.Raeume.ForEach(r =>
     {
         RaumTreeViewItem rtvi = new RaumTreeViewItem(r);
         Children.Add(rtvi);
     });
 }
예제 #6
0
        public async Task <IActionResult> Create([Bind("ID,Bezeichnung,Straße,PLZ,Ort,IstInaktiv")] Wohnung wohnung)
        {
            if (ModelState.IsValid)
            {
                _context.Add(wohnung);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(wohnung));
        }
예제 #7
0
 public void WriteWohnung(Wohnung wohnung)
 {
     WriteModel(wohnung);
     wohnung.Raeume.ForEach(raum =>
     {
         WriteModel(raum);
         raum.Messpunkte.ForEach(messpunkt =>
         {
             WriteModel(messpunkt);
             messpunkt.Werte.ForEach(wert => WriteModel(wert));
         });
     });
 }
예제 #8
0
        public void BSP1_Aufgabe_010()
        {
            Wohnung w = new Wohnung();

            w.WertSetzen <string>("adresse", "A-1030");
            Programmieren.PrüfeMethode <bool>(w, "umbauen", null, "balkon", x => { return(x); });
            Programmieren.PrüfeMethode <double>(w, "umbauen", null, "preis", x => { return(x == 800); });

            w = new Wohnung();
            w.WertSetzen <string>("adresse", "A-1050");
            Programmieren.PrüfeMethode <bool>(w, "umbauen", null, "balkon", x => { return(!x); });
            Programmieren.PrüfeMethode <double>(w, "umbauen", null, "preis", x => { return(x == 700); });

            w = new Wohnung();
            w.WertSetzen <string>("adresse", "A-1070");
            w.WertSetzen <int>("anzahlM2", 89);
            Programmieren.PrüfeMethode <bool>(w, "umbauen", null, "balkon", x => { return(x); });
            Programmieren.PrüfeMethode <double>(w, "umbauen", null, "preis", x => { return(x == 1200); });

            w = new Wohnung();
            w.WertSetzen <string>("adresse", "A-1070");
            w.WertSetzen <int>("anzahlM2", 90);
            Programmieren.PrüfeMethode <bool>(w, "umbauen", null, "balkon", x => { return(!x); });
            Programmieren.PrüfeMethode <double>(w, "umbauen", null, "preis", x => { return(x == 0); });

            w = new Wohnung();
            w.WertSetzen <string>("adresse", "A-1070");
            w.WertSetzen <int>("anzahlM2", 91);
            Programmieren.PrüfeMethode <bool>(w, "umbauen", null, "balkon", x => { return(!x); });
            Programmieren.PrüfeMethode <double>(w, "umbauen", null, "preis", x => { return(x == 0); });

            w = new Wohnung();
            w.WertSetzen <string>("adresse", "asdf");
            Programmieren.PrüfeMethode <bool>(w, "umbauen", null, "balkon", x => { return(!x); });
            Programmieren.PrüfeMethode <double>(w, "umbauen", null, "preis", x => { return(x == 0); });
        }
예제 #9
0
        public void BSP1_Aufgabe_009()
        {
            Wohnung w = new Wohnung();

            w.WertSetzen <int>("anzahlM2", 101);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 1000); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 99);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x != 1000); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 101);
            w.WertSetzen <bool>("balkon", true);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 1300); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 101);
            w.WertSetzen <bool>("balkon", false);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 1000); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 100);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 800); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 76);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 800); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 76);
            w.WertSetzen <bool>("balkon", true);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 1100); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 76);
            w.WertSetzen <bool>("balkon", false);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 800); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 75);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 500); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 51);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 500); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 51);
            w.WertSetzen <bool>("balkon", true);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 650); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 51);
            w.WertSetzen <bool>("balkon", false);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 500); });

            w = new Wohnung();
            w.WertSetzen <int>("anzahlM2", 50);
            Programmieren.PrüfeMethode <double>(w, "preisBerechnen", null, "preis", x => { return(x == 0); });
        }
예제 #10
0
        private void ShowMetadata()
        {
            Overlay overlay = new Overlay(grdOverlay);

            // if (lstPicker == null)
            {
                BildInfo bi = curProjectSql.GetBildInfo(szImageName, DateTime.Now);
                if (lastBi != null)
                {
                    if (!bi.bBildIdFound)
                    {
                        bi.GebaeudeId = lastBi.GebaeudeId;
                        bi.EtageId    = lastBi.EtageId;
                        bi.WohnungId  = lastBi.WohnungId;
                        bi.ZimmerId   = lastBi.ZimmerId;
                    }
                }
                List <Gebaeude> gebaeudeListe = curProjectSql.sqlGebaeude.GetListe();
                overlay.Reset();
                grdOverlay.Children.Clear();
                Picker pGebaeude = overlay.AddPicker(overlay.iRow.ToString(), "Gebäude", ID_GEBAEUDE, true, (picker, szEntry) => {
                    Gebaeude newGebaeude = curProjectSql.sqlGebaeude.Ensure(szEntry) as Gebaeude;
                    if (!gebaeudeListe.Any(g => g.ID == newGebaeude.ID))
                    {
                        gebaeudeListe.Add(newGebaeude);
                        picker.ItemsSource  = null;
                        picker.ItemsSource  = gebaeudeListe.OrderBy(o => o.Bezeichnung).ToList();
                        picker.SelectedItem = newGebaeude;
                    }
                });
                pGebaeude.ItemsSource        = gebaeudeListe.OrderBy(o => o.Bezeichnung).ToList();
                pGebaeude.ItemDisplayBinding = new Binding("Bezeichnung");
                pGebaeude.SelectedItem       = gebaeudeListe.Find(x => x.ID == bi.GebaeudeId);

                List <Etage> etageListe = curProjectSql.sqlEtage.GetListe();
                Picker       pEtage     = overlay.AddPicker(overlay.iRow.ToString(), "Etage", ID_ETAGE, true, (picker, szEntry) => {
                    Etage newEtage = curProjectSql.sqlEtage.Ensure(szEntry) as Etage;
                    if (!etageListe.Any(g => g.ID == newEtage.ID))
                    {
                        etageListe.Add(newEtage);
                        picker.ItemsSource  = null;
                        picker.ItemsSource  = etageListe.OrderBy(o => o.Bezeichnung).ToList();
                        picker.SelectedItem = newEtage;
                    }
                });
                pEtage.ItemsSource        = etageListe.OrderBy(o => o.Bezeichnung).ToList();
                pEtage.ItemDisplayBinding = new Binding("Bezeichnung");
                pEtage.SelectedItem       = etageListe.Find(x => x.ID == bi.EtageId);

                List <Wohnung> wohnungListe = curProjectSql.sqlWohnung.GetListe();
                Picker         pWohnung     = overlay.AddPicker(overlay.iRow.ToString(), "Wohnung", ID_WOHNUNG, true, (picker, szEntry) => {
                    Wohnung newWohnung = curProjectSql.sqlWohnung.Ensure(szEntry) as Wohnung;
                    if (!wohnungListe.Any(g => g.ID == newWohnung.ID))
                    {
                        wohnungListe.Add(newWohnung);
                        picker.ItemsSource  = null;
                        picker.ItemsSource  = wohnungListe.OrderBy(o => o.Bezeichnung).ToList();;
                        picker.SelectedItem = newWohnung;
                    }
                });
                pWohnung.ItemsSource        = wohnungListe.OrderBy(o => o.Bezeichnung).ToList();;
                pWohnung.ItemDisplayBinding = new Binding("Bezeichnung");
                pWohnung.SelectedItem       = wohnungListe.Find(x => x.ID == bi.WohnungId);

                List <Zimmer> zimmerListe = curProjectSql.sqlZimmer.GetListe();
                Picker        pZimmer     = overlay.AddPicker(overlay.iRow.ToString(), "Zimmer", ID_ZIMMER, true, (picker, szEntry) => {
                    Zimmer newZimmer = curProjectSql.sqlZimmer.Ensure(szEntry) as Zimmer;
                    if (!zimmerListe.Any(g => g.ID == newZimmer.ID))
                    {
                        zimmerListe.Add(newZimmer);
                        picker.ItemsSource  = null;
                        picker.ItemsSource  = zimmerListe.OrderBy(o => o.Bezeichnung).ToList();;
                        picker.SelectedItem = newZimmer;
                    }
                });
                pZimmer.ItemsSource        = zimmerListe.OrderBy(o => o.Bezeichnung).ToList();;
                pZimmer.ItemDisplayBinding = new Binding("Bezeichnung");
                pZimmer.SelectedItem       = zimmerListe.Find(x => x.ID == bi.ZimmerId);

                kommentarEntry = overlay.AddInput("", "", bi.KommentarBezeichnung, "COMMENT");
                var submitButton = overlay.AddButton("speichern");
                submitButton.Clicked += (senderx, e2) =>
                {
                    var selGebaeude = pGebaeude.SelectedItem as Gebaeude;
                    var selEtage    = pEtage.SelectedItem as Etage;
                    var selWohnung  = pWohnung.SelectedItem as Wohnung;
                    var selZimmer   = pZimmer.SelectedItem as Zimmer;

                    foreach (var child in grdOverlay.Children)
                    {
                        Entry entry = child as Entry;
                        if (entry != null && entry.IsVisible)
                        {
                            if (entry.StyleId.Equals(ID_GEBAEUDE) && selGebaeude == null)
                            {
                                ((IEntryController)entry).SendCompleted();
                                selGebaeude = pGebaeude.SelectedItem as Gebaeude;
                            }
                            else if (entry.StyleId.Equals(ID_ETAGE) && selEtage == null)
                            {
                                ((IEntryController)entry).SendCompleted();
                                selEtage = pEtage.SelectedItem as Etage;
                            }
                            else if (entry.StyleId.Equals(ID_WOHNUNG) && selWohnung == null)
                            {
                                ((IEntryController)entry).SendCompleted();
                                selWohnung = pWohnung.SelectedItem as Wohnung;
                            }
                            else if (entry.StyleId.Equals(ID_ZIMMER) && selZimmer == null)
                            {
                                ((IEntryController)entry).SendCompleted();
                                selZimmer = pZimmer.SelectedItem as Zimmer;
                            }
                        }
                    }


                    curProjectSql.sqlGebaeude.Set(bi.BildId, selGebaeude != null ? selGebaeude.ID : -1);
                    curProjectSql.sqlEtage.Set(bi.BildId, selEtage != null ? selEtage.ID : -1);
                    curProjectSql.sqlWohnung.Set(bi.BildId, selWohnung != null ? selWohnung.ID : -1);
                    curProjectSql.sqlZimmer.Set(bi.BildId, selZimmer != null ? selZimmer.ID : -1);

                    curProjectSql.SetComment(szImageName, kommentarEntry.Text);

                    lastBi = curProjectSql.GetBildInfo(szImageName, DateTime.Now);
                    overlay.Close();
                };

                overlay.AddCancelX();
            }

            overlay.Show();
        }
예제 #11
0
        private void BtnSave_Click(object sender, RoutedEventArgs e)
        {
            if (bmk != null)
            {
                if (bmk.BildInfo == null)
                {
                    bmk.BildInfo = new BildInfo();
                }

                Gebaeude gebaeude = cmbGebaeude.SelectedItem as Gebaeude;
                if (gebaeude != null)
                {
                    bmk.BildInfo.GebaeudeId          = gebaeude.ID;
                    bmk.BildInfo.GebaeudeBezeichnung = gebaeude.Bezeichnung;
                }

                Etage etage = cmbEtage.SelectedItem as Etage;
                if (etage != null)
                {
                    bmk.BildInfo.EtageId          = etage.ID;
                    bmk.BildInfo.EtageBezeichnung = etage.Bezeichnung;
                }

                Wohnung wohnung = cmbWohnung.SelectedItem as Wohnung;
                if (wohnung != null)
                {
                    bmk.BildInfo.WohnungId          = wohnung.ID;
                    bmk.BildInfo.WohnungBezeichnung = wohnung.Bezeichnung;
                }

                Zimmer zimmer = cmbZimmer.SelectedItem as Zimmer;
                if (zimmer != null)
                {
                    bmk.BildInfo.ZimmerId          = zimmer.ID;
                    bmk.BildInfo.ZimmerBezeichnung = zimmer.Bezeichnung;
                }

                bmk.BildInfo.KommentarBezeichnung = tbKommentar.Text;

                if (newImage)
                {
                    //TODO: Auch Timepicker für neues Bild? Aktuell nur DatePicker.

                    if (dpCaptureDate.SelectedDate == null)
                    {
                        MessageBoxResult MbResult = MessageBox.Show("Es wurde kein Aufnahmedatum eingetragen. Wenn kein Datum eingetragen wird, wird das aktuelle Datum verwendet.\n Möchten sie ein Datum eintragen?", " Kein Aufnahmedatum eingetragen", MessageBoxButton.YesNo);
                        if (MbResult == MessageBoxResult.Yes)
                        {
                            return;
                        }
                    }
                    bmk.BildInfo.CaptureDate = dpCaptureDate.SelectedDate ?? DateTime.Now;
                }
                else
                {
                    TimeSpan time = bmk.BildInfo.CaptureDate.TimeOfDay;
                    DateTime date = dpCaptureDate.SelectedDate ?? DateTime.Now;

                    bmk.BildInfo.CaptureDate = date.Add(time);
                }

                clicked = true;
                this.Close();
            }
        }
예제 #12
0
        public wsResponse SendResponse(HttpListenerRequest request)
        {
            Dictionary <string, string> postParams = new Dictionary <string, string>();
            wsResponse swRes = new wsResponse();

            string szProjectname = "";
            string szFilename    = "";
            string szHasJson     = "";

            if (request.QueryString["project"] != null)
            {
                szProjectname = request.QueryString["project"].ToString();
            }
            if (request.QueryString["file"] != null)
            {
                szFilename = request.QueryString["file"].ToString();
            }
            if (request.QueryString["json"] != null)
            {
                szHasJson = request.QueryString["json"].ToString();
            }

            swRes.ba = Encoding.UTF8.GetBytes("{}");
            if (request.HttpMethod.Equals("POST", StringComparison.InvariantCultureIgnoreCase))
            {
                if (string.IsNullOrEmpty(szProjectname))
                {
                    JsonError je = new JsonError {
                        szMessage = "POST requires a project "
                    };
                    ShowError(je.szMessage);

                    string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(je);
                    swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                    swRes.szMinetype = "text/json";
                }
                else if (string.IsNullOrEmpty(szHasJson) && string.IsNullOrEmpty(szFilename))
                {
                    JsonError je = new JsonError {
                        szMessage = "POST requires both project and file "
                    };
                    ShowError(je.szMessage);

                    string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(je);
                    swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                    swRes.szMinetype = "text/json";
                }
                else if (!string.IsNullOrEmpty(szHasJson))
                {
                    string szJson = "";
                    System.Text.Encoding encoding = request.ContentEncoding;
                    using (StreamReader sr = new StreamReader(request.InputStream, encoding))
                    {
                        szJson = sr.ReadToEnd();
                    }
                    request.InputStream.Close();
                    try
                    {
                        BildInfo bi = Newtonsoft.Json.JsonConvert.DeserializeObject <BildInfo>(szJson);
                        if (bi.CaptureDate == null)
                        {
                            bi.CaptureDate = DateTime.Now;
                        }
                        ProjectSql tmpProject = new ProjectSql(szProjectname, Config.current.szDbSuffix);
                        var        biResult   = tmpProject.GetBildId(bi.BildName, bi.CaptureDate);
                        tmpProject.SetCaptureDate(biResult.BildId, bi.CaptureDate);

                        Gebaeude gebauede = tmpProject.sqlGebaeude.Ensure(bi.GebaeudeBezeichnung) as Gebaeude;
                        Etage    etage    = tmpProject.sqlEtage.Ensure(bi.EtageBezeichnung) as Etage;
                        Wohnung  wohnung  = tmpProject.sqlWohnung.Ensure(bi.WohnungBezeichnung) as Wohnung;
                        Zimmer   zimmer   = tmpProject.sqlZimmer.Ensure(bi.ZimmerBezeichnung) as Zimmer;
                        if (gebauede != null)
                        {
                            tmpProject.sqlGebaeude.Set(biResult.BildId, gebauede.ID);
                        }
                        if (etage != null)
                        {
                            tmpProject.sqlEtage.Set(biResult.BildId, etage.ID);
                        }
                        if (wohnung != null)
                        {
                            tmpProject.sqlWohnung.Set(biResult.BildId, wohnung.ID);
                        }
                        if (zimmer != null)
                        {
                            tmpProject.sqlZimmer.Set(biResult.BildId, zimmer.ID);
                        }
                        tmpProject.SetComment(biResult.BildId, bi.KommentarBezeichnung);
                    }
                    catch (Exception ex)
                    {
                        JsonError je = new JsonError {
                            szMessage = "POST " + ex.ToString()
                        };
                        ShowError(je.szMessage);

                        string szErrJson = Newtonsoft.Json.JsonConvert.SerializeObject(je);
                        swRes.ba         = Encoding.UTF8.GetBytes(szErrJson);
                        swRes.szMinetype = "text/json";
                    }
                }
                else
                {
                    try
                    {
                        string szFullPath = System.IO.Path.Combine(XCamera.Util.Config.current.szBasedir, szProjectname, Config.current.szPicSuffix);
                        if (!Directory.Exists(szFullPath))
                        {
                            Directory.CreateDirectory(szFullPath);
                        }
                        string szFullFilename = System.IO.Path.Combine(szFullPath, szFilename);
                        ShowInfo("recieving " + szFullFilename);

                        using (FileStream fs = new FileStream(szFullFilename, FileMode.Create, FileAccess.Write))
                        {
                            request.InputStream.CopyTo(fs);
                        }
                        request.InputStream.Close();
                        ProjectSql tmpProject = new ProjectSql(szProjectname, Config.current.szDbSuffix);
                        tmpProject.AddBild(szFilename);
                    }
                    catch (Exception ex)
                    {
                        JsonError je = new JsonError {
                            szMessage = "POST " + ex.ToString()
                        };
                        ShowError(je.szMessage);

                        string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(je);
                        swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                        swRes.szMinetype = "text/json";
                    }
                }
            }
            else
            {
                if (string.IsNullOrEmpty(szProjectname))
                {
                    ShowInfo("sending project list");
                    string[]           szProjects = Directory.GetDirectories(XCamera.Util.Config.current.szBasedir, "*.", SearchOption.TopDirectoryOnly);
                    List <JsonProject> jProjects  = new List <JsonProject>();
                    foreach (var szProject in szProjects)
                    {
                        jProjects.Add(new JsonProject {
                            szProjectName = System.IO.Path.GetFileNameWithoutExtension(szProject),
                            lSize         = GetDirectorySize(0, System.IO.Path.Combine(XCamera.Util.Config.current.szBasedir, szProject))
                        });
                    }

                    string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(jProjects);
                    swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                    swRes.szMinetype = "text/json";
                }
                else if (!string.IsNullOrWhiteSpace(szFilename))
                {
                    string szFullFilename = System.IO.Path.Combine(XCamera.Util.Config.current.szBasedir, szProjectname, szFilename);
                    ShowInfo("sending  " + szFullFilename);
                    if (File.Exists(szFullFilename))
                    {
                        if (System.IO.Path.GetExtension(szFullFilename).Equals(".jpg", StringComparison.InvariantCultureIgnoreCase))
                        {
                            swRes.ba         = System.IO.File.ReadAllBytes(szFullFilename);
                            swRes.szMinetype = "image/jpeg";
                        }
                        else
                        {
                            // swRes.szMinetype = "Application/x-sqlite3";
                            ProjectSql tmpProject = new ProjectSql(szProjectname);
                            var        metaData   = tmpProject.GetMetaData();
                            string     szJson     = Newtonsoft.Json.JsonConvert.SerializeObject(metaData);
                            swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                            swRes.szMinetype = "text/json";
                        }
                    }
                    else
                    {
                        JsonError je = new JsonError {
                            szMessage = "File not found " + szFullFilename
                        };
                        ShowError(je.szMessage);
                        string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(je);
                        swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                        swRes.szMinetype = "text/json";
                    }
                }
                else if (!string.IsNullOrEmpty(szProjectname))
                {
                    ShowInfo("sending project info " + szProjectname);
                    List <JsonProject> jProjects = new List <JsonProject>();

                    jProjects.Add(new JsonProject
                    {
                        szProjectName = System.IO.Path.GetFileNameWithoutExtension(szProjectname),
                        lSize         = GetDirectorySize(0, System.IO.Path.Combine(XCamera.Util.Config.current.szBasedir, szProjectname))
                    });


                    string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(jProjects);
                    swRes.ba         = Encoding.UTF8.GetBytes(szJson);
                    swRes.szMinetype = "text/json";
                }
            }

            return(swRes);
        }