public static int AddToQueue(AttendanceGPSPoint attendanceGPSPoint, Attendance attendance) { SyncQueue queueItem = new SyncQueue() { type = SyncQueueType.sqtAttendanceGPSPoint, itemID = attendanceGPSPoint.id, attendanceDate = attendance.date }; queueItem.fileLocation = Path.Combine(Common.DatabaseFileDir, fUserName, @"SyncQueue", String.Format("attendanceGPSPoint_{0}.xml", Guid.NewGuid())); new FileInfo(queueItem.fileLocation).Directory.Create(); var serializer = new XmlSerializer(typeof(AttendanceGPSPoint)); using (var writer = new StreamWriter(queueItem.fileLocation)) { serializer.Serialize(writer, attendanceGPSPoint); } return SaveSyncQueue(queueItem, false); }
/// <summary> /// Insert or update a AttendanceGPSPoint /// </summary> public static int SaveAttendanceGPSPoint(AttendanceGPSPoint item) { var max = 0; if (attendanceGPSPoints.Count > 0) max = attendanceGPSPoints.Max(x => x.id); if (item.id == 0) { item.id = ++max; attendanceGPSPoints.Add (item); } else { var i = attendanceGPSPoints.Find (x => x.id == item.id); if (i != null) { i = item; // replaces item in collection with updated value } else { attendanceGPSPoints.Add (item); } } WriteXml (); return item.id; }
public static int AddToQueue(AttendanceGPSPoint attendanceGPSPoint, Attendance attendance) { return SyncQueueRepository.AddToQueue(attendanceGPSPoint, attendance); }
public static int SaveAttendanceGPSPoint(AttendanceGPSPoint item) { return AttendanceGPSPointRepository.SaveAttendanceGPSPoint(item); }
void RefreshContent() { llSyncItems.RemoveAllViews(); queue = (List <SyncQueue>)SyncQueueManager.GetSyncQueue(selectedDate); foreach (var q in queue) { View view = LayoutInflater.Inflate(Resource.Layout.SyncFragmentItem, null); RelativeLayout rl = view.FindViewById <RelativeLayout> (Resource.Id.sfiRelativeLayout); ImageView iv = view.FindViewById <ImageView> (Resource.Id.sfiStatusImage); TextView type = view.FindViewById <TextView> (Resource.Id.sfiTypeInfoText); TextView loc = view.FindViewById <TextView> (Resource.Id.sfiLocationText); try { if (q.isSync) { rl.SetBackgroundColor(Android.Graphics.Color.LightGreen); iv.SetImageResource(Resource.Drawable.ic_check_circle_white_36dp); type.SetTextAppearance(this, Resource.Style.text_success); loc.SetTextAppearance(this, Resource.Style.text_success_small); } else { rl.SetBackgroundColor(Android.Graphics.Color.LightPink); iv.SetImageResource(Resource.Drawable.ic_highlight_off_white_36dp); type.SetTextAppearance(this, Resource.Style.text_danger); loc.SetTextAppearance(this, Resource.Style.text_danger_small); } Attendance att = null; Pharmacy pharm = null; switch (q.type) { case SyncQueueType.sqtAttendance: att = AttendanceManager.GetAttendance(q.itemID); pharm = PharmacyManager.GetPharmacy(att.pharmacy); type.Text = string.Format(@"Тип: Посещение аптеки {0} за дату {1}", pharm.fullName, att.date.ToString(@"d")); loc.Text = string.Format(@"Размещение: {0}", q.fileLocation); break; case SyncQueueType.sqtAttendanceResult: AttendanceResult attRes = AttendanceResultManager.GetAttendanceResult(q.itemID); att = AttendanceManager.GetAttendance(attRes.attendance); pharm = PharmacyManager.GetPharmacy(att.pharmacy); type.Text = string.Format(@"Тип: Значение по препарату в посещение аптеки {0} за дату {1}", pharm.fullName, att.date.ToString(@"d")); loc.Text = string.Format(@"Размещение: {0}", q.fileLocation); break; case SyncQueueType.sqtAttendanceGPSPoint: AttendanceGPSPoint attGPS = AttendanceGPSPointManager.GetAttendanceGPSPoint(q.itemID); att = AttendanceManager.GetAttendance(attGPS.attendance); pharm = PharmacyManager.GetPharmacy(att.pharmacy); type.Text = string.Format(@"Тип: GPS значение в посещение аптеки {0} за дату {1} - lat:{2}, lon:{3}", pharm.fullName, att.date.ToString(@"d"), attGPS.latitude, attGPS.longitude); loc.Text = string.Format(@"Размещение: {0}", q.fileLocation); break; case SyncQueueType.sqtAttendancePhoto: AttendancePhoto attPho = AttendancePhotoManager.GetAttendancePhoto(q.itemID); type.Text = string.Format(@"Фото: {0}", attPho.photoPath); loc.Text = q.fileLocation; break; default: type.Text = @"Неизвестный тип файла"; type.SetTextColor(Android.Graphics.Color.DarkRed); break; } } catch (Exception ex) { type.Text = @"Error:"; loc.Text = ex.Message; } llSyncItems.AddView(view); } }
void UpLoadAttendanceGPSPoints() { string cookieName = string.Empty; string cookieValue = string.Empty; var user = Common.GetCurrentUser(); var login = new RestClient(Settings.URLs.Host); //login.Authenticator = new SimpleAuthenticator("identifier", "*****@*****.**", "password", "q1234567"); login.Authenticator = new SimpleAuthenticator(@"identifier", user.username, @"password", user.password); login.CookieContainer = new CookieContainer(); var request = new RestRequest(@"auth/local", Method.POST); var response = login.Execute <User>(request); User userRes = response.Data; if (userRes == null) { RunOnUiThread(() => progressDialog.SetMessage(@"Не удалось пройти аутентификацию!")); } cookieName = response.Cookies[0].Name; cookieValue = response.Cookies[0].Value; var queueToUpload = (List <SyncQueue>)SyncQueueManager.GetSyncQueue(selectedDate); foreach (var q in queueToUpload) { try { if ((q.type == SyncQueueType.sqtAttendanceGPSPoint) && (!q.isSync)) { var client = new RestClient(Settings.URLs.Host); //Debug.WriteLine(@"Получение информации о себе.", @"Info"); AttendanceGPSPoint attendanceGPSPoint = SyncQueueManager.GetAttendanceGPSPoint(q.fileLocation); //Attendance attendance = AttendanceManager.GetAttendance (attendanceGPSPoint.attendance); RunOnUiThread(() => progressDialog.SetMessage(string.Format(@"Загрузка GPS значений с id {0} по посещению с id:{1}", attendanceGPSPoint.id, attendanceGPSPoint.attendance))); request = new RestRequest(@"AttendanceGPSPoint/", Method.POST); request.AddCookie(cookieName, cookieValue); request.RequestFormat = DataFormat.Json; request.JsonSerializer.ContentType = @"application/json; charset=utf-8"; request.AddParameter(@"application/json; charset=utf-8", attendanceGPSPoint.ToJSON(), ParameterType.RequestBody); // attendanceResult.id = 0; // request.AddBody(attendanceResult); var respAttendanceGPSPoint = client.Execute(request); switch (respAttendanceGPSPoint.StatusCode) { case HttpStatusCode.OK: case HttpStatusCode.Created: q.isSync = true; SyncQueueManager.SaveSyncQueue(q, false); // Thread.Sleep (500); RunOnUiThread(() => { progressDialog.SetMessage(string.Format(@"GPS значение с id {0} по посещению с id:{1} ЗАГРУЖЕНО!", attendanceGPSPoint.id, attendanceGPSPoint.attendance)); // RefreshContent(); }); continue; default: // Thread.Sleep (500); RunOnUiThread(() => progressDialog.SetMessage(@"Не удалось загрузить GPS значение по посещению!")); // Thread.Sleep (1500); continue; } } } catch (Exception ex) { RunOnUiThread(() => progressDialog.SetMessage(@"Error : " + ex.Message)); // Thread.Sleep (1500); continue; } } }