// private void DownloadProject private async Task SendProjectAsync(string szProjectName, Action<Boolean, Boolean, string> cb) { if (projects.Any(proj => { return proj.Equals(szProjectName); })) { // ToDo: open the overlay with the server settings // here we expect the current settings to be correct. cb(false, false, "sende Projekt " + szProjectName); ProjectSql tmpProject = new ProjectSql(szProjectName); List<Bild> bilder = tmpProject.GetBilderChanged(); Boolean bError = false; // send all changed images cb(false, false, "sende " + bilder.Count.ToString() + " Bilder"); foreach (var bild in bilder) { cb(false, false, "sende " + bild.Name); bError = ! await ProjectUtil.SendFileAsync(szProjectName, Path.GetFileName(bild.Name)); if( bError) { break; } } if (!bError) { // send all changed data foreach (var bild in bilder) { cb(false, false, "sende geänderte Daten für " + bild.Name); BildInfo bi = tmpProject.GetBildInfo(bild.Name, DateTime.Now); string szJson = Newtonsoft.Json.JsonConvert.SerializeObject(bi); if (await ProjectUtil.SendJsonAsync(szProjectName, szJson)) { tmpProject.ClearStatus(bild.ID, STATUS.CHANGED); } } } string szMessage = ""; if( bError) { szMessage = "Es gab einen internen Fehler."; } cb(true, bError, szMessage); } }
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(); }
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); }