/// <summary> /// Wrapper en Category, Choice og/eller Detail til et kald sammen med Patients CPR-nr og en Status kode på kaldet(Afventende, Udført, Fortrudt) /// </summary> /// <param name="cprnr">CPR-nr for Patient</param> /// <param name="status">Status kode(Active, Completed, Canceled) på kaldet</param> /// <param name="categoryEntity">Kategorien</param> /// <param name="choiceEntity">Valget</param> /// <param name="detailEntity">Tilebør</param> /// <returns>Returner et objekt der anses som et kald, klar til at blive sendt afsted til Web API</returns> public static CallEntity WrapCall(String cprnr, CallUtil.StatusCode status, CategoryEntity categoryEntity, ChoiceEntity choiceEntity=null, DetailEntity detailEntity=null) { var callEntity = new CallEntity(); /* Non-nullable values */ //callEntity._id = Guid.NewGuid().ToString(); callEntity.PatientCPR = cprnr; callEntity.Status = (int)status; callEntity.Category = categoryEntity.Name; /* Nullable values*/ /* if (categoryEntity.Picture != null) { callEntity.Picture = categoryEntity.Picture; } */ if (choiceEntity != null) { callEntity.Choice = choiceEntity.Name; } /* Nullable values*/ if (detailEntity != null) { callEntity.Detail = detailEntity.Name; } return callEntity; }
public static void SetNewCalls(CallEntity callEntity) { // Load calls from database CallEntities = DataHandler.LoadCallsFromLocalDatabase(new LocalDB()).ToList(); if (CallEntities == null || CallEntities.Count == 0) { CallEntities = new List<CallEntity>(); } // If we are making a new call if (callEntity != null) { // And if the call is the same as before if (CallEntities.Any(call => call._id == callEntity._id)) { //CallEntities.Remove(callEntity); callEntity = null; } } // If the call is not the same as before, e.g. if we are just updating the call if (callEntity != null) { CallEntities.Add(callEntity); DataHandler.SaveCallsToLocalDatabase(new LocalDB(), CallEntities.ToArray()); } }
/// <summary> /// Opdater et kald. Dette kan f.eks. være når en Patient fortryder et kald, hvorved status på kaldet ændres fra "Afventende" til "Fortrudt" /// </summary> /// <param name="call">Kald objekt der indeholder properties for hvad kaldet skal indeholde</param> public void UpdateCall(CallEntity call) { var json = "{\"_id\" : \""+call._id+"\", \"Status\" : "+call.Status+"}"; var manager = new CallManager(); manager.PutCall(json); }
/// <summary> /// Opdater et kald. Dette kan f.eks. være når en Patient fortryder et kald, hvorved status på kaldet ændres fra "Afventende" til "Fortrudt" /// </summary> /// <param name="call">Kald objekt der indeholder properties for hvad kaldet skal indeholde</param> public void UpdateCall(CallEntity call) { //var json = CreateCall(call); //var json = "{\"_id\" : \"5638662c4ca8e92f7cf1fcc7\", \"Status\" : 2}"; var json = "{\"_id\" : \""+call._id+"\", \"Status\" : "+call.Status+"}"; var manager = new CallManager(); manager.PutCall(json); }
public static void MakeCall(CallEntity callEntity, Activity activity) { var category = callEntity.Category; var choice = callEntity.Choice ?? ""; var detail = callEntity.Detail ?? ""; new AlertDialog.Builder(activity) .SetTitle(category + " " + choice + " " + detail) .SetMessage(Strings.CallSendMessage) .SetPositiveButton(Strings.CallSend, delegate { ThreadPool.QueueUserWorkItem(o => { activity.RunOnUiThread(() => { dialog = new ProgressDialog(activity); dialog.SetMessage(Strings.SpinnerDataSending); dialog.SetCancelable(false); dialog.Show(); }); try { ICall patientCall = new PatientCall(); // Assign the callid with the returned MongoDB id callEntity._id = patientCall.MakeCall(callEntity); activity.RunOnUiThread(() => { // Call successfull, take the user to myCalls activity.ActionBar.SelectTab(activity.ActionBar.GetTabAt(1)); SetNewCalls(callEntity); dialog.Hide(); }); } catch (Exception ex) { Console.WriteLine("ERROR making call: " + ex.Message); activity.RunOnUiThread(() => { dialog.Hide(); new AlertDialog.Builder(activity).SetTitle(Strings.Error) .SetMessage(Strings.ErrorSendingCall) .SetPositiveButton(Strings.OK, delegate { }).Show(); }); } }); }) .SetNegativeButton(Strings.Cancel, delegate {/* Do nothing */ }) .Show(); }
public MyCallsSource(CallEntity callEntity, MyCallsViewController vc) { if (vc != null) { this.vc = vc; } SetCallEntities(callEntity); }
public void UpdateMyCall(CallEntity callEntity) { try { db.Update(callEntity); } catch (Exception e) { } }
/// <summary> /// Opret et kald /// </summary> /// <param name="call">Kald objekt der indeholder properties for hvad kaldet skal indeholde</param> public String MakeCall(CallEntity call) { // Json repræsentation af et kald der sendes afsted //var jsonWorking = "{\"PatientCPR\" : \"123456-1234\", \"Category\" : \"TestTestTest\",\"Choice\" : null, \"Detail\" : null ,\"CreatedOn\" : \"onsdag, 28 oktober 15.27.31\",\"ModifiedOn\" : null,\"Status\" : 0}"; call.CreatedOn = DateTime.Now.ToString("HH:mm:ss"); var json = CreateJSONCall(call); var manager = new CallManager(); manager.PostCall(json); return HttpHandler.MongoCallId; }
/// <summary> /// Henter alle kald fra Web API som en Patient har foretaget /// </summary> /// <returns>Returnere en Liste af kald.</returns> public String GetStatusCall(CallEntity callEntity) { var httpHandler = new HttpHandler(); var callJson = httpHandler.GetData(HttpHandler.API.Call, callEntity._id); var json = JsonConvert.DeserializeObject(callJson); Dictionary<string, string> jsonDictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(json as string); var callStatus = jsonDictionary["Status"]; return callStatus; }
/// <summary> /// Opdater alle kaldenes statuser ud fra en given liste /// </summary> /// <param name="calls"></param> /// <param name="callEntity"></param> /// <returns>En opdateret liste af kald hvor hver deres status er opdateret</returns> public static CallEntity[] GetUpdatedStatusForAllCalls(List<CallEntity> calls, CallEntity callEntity) { var newCallStatus = GetStatusCall(callEntity); callEntity.Status = Int32.Parse(newCallStatus); var oldCall = calls.First(s => s._id == callEntity._id); // Hvis status på kaldet har ændret sig if (oldCall.Status != callEntity.Status) { // Fjern det gamle kald fra listen calls.Remove(oldCall); // Tilføj det nye kald til listen calls.Add(callEntity); } return calls.ToArray(); }
public void SerializeCallJSON_JSONConverted() { // Arrange var testString = "Test"; CallEntity call = new CallEntity { _id = Guid.NewGuid().ToString(), Category = "Mad/Drikke", Choice = "Cola", CreatedOn = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Detail = "Sukker", PatientCPR = Guid.NewGuid().ToString(), Status = (int)CallUtil.StatusCode.Active }; //Act string json = JsonConvert.SerializeObject(call); //Assert Assert.IsTrue(ReferenceEquals(json.GetType(), testString.GetType())); }
public static void MakeCall(CallEntity callEntity, UIViewController vc) { var category = callEntity.Category; var choice = callEntity.Choice ?? ""; var detail = callEntity.Detail ?? ""; var confirmAlertController = UIAlertController.Create(category + " " + choice + " " + detail, Strings.CallSendMessage, UIAlertControllerStyle.Alert); // When user confirms the service var okAction = UIAlertAction.Create(Strings.CallSend, UIAlertActionStyle.Destructive, action => { ShowLoadingScreen(vc, Strings.SpinnerDataSending); new System.Threading.Thread(new System.Threading.ThreadStart(() => { var callEntities = DataHandler.LoadCallsFromLocalDatabase(new LocalDB()); vc.InvokeOnMainThread(() => { if (callEntities != null && callEntities.Length > 0) { // Check if the call already has been made, then return; if (CallHasBeenMade(callEntities, callEntity)) return; } new System.Threading.Thread(new System.Threading.ThreadStart(() => { // Make the async patient call here try { ICall patientCall = new PatientCall(); // Assign the callid with the returned MongoDB id callEntity._id = patientCall.MakeCall(callEntity); vc.InvokeOnMainThread(() => { // Call successfull, take the user to myCalls passing the viewcontroller and the requested call GoToMyCalls(vc,callEntity); }); } catch (Exception ex) { // Hide the loading screen Console.WriteLine("ERROR making call: " + ex.Message); vc.InvokeOnMainThread(() => { loadingOverlay.Hide(); new UIAlertView(Strings.Error, Strings.ErrorSendingCall, null, Strings.OK, null).Show(); }); } })).Start(); }); })).Start(); new System.Threading.Thread(new System.Threading.ThreadStart(() => { })).Start(); }); // When user cancels the service var cancelAction = UIAlertAction.Create(Strings.Cancel, UIAlertActionStyle.Cancel, action => { // Do nothing. }); confirmAlertController.AddAction(okAction); confirmAlertController.AddAction(cancelAction); // Display the alert vc.PresentViewController(confirmAlertController, true, null); }
private static void GoToMyCalls(UIViewController vc, CallEntity callEntity) { // Hide the loading screen loadingOverlay.Hide(); // (Get a confirm message that the patient call was successfull) //new UIAlertView(Strings.CallSent, null, null, Strings.OK, null).Show(); // Take the user back to Categories //vc.NavigationController.PopViewController(true); // Take the user to My Calls var tabbar = vc.TabBarController; var navController = tabbar.ViewControllers[1]; var myCallsController = (MyCallsViewController)navController.ChildViewControllers[0]; myCallsController.callEntity = callEntity; tabbar.SelectedViewController = navController; }
private static bool CallHasBeenMade(CallEntity[] callEntities, CallEntity callEntity) { if (callEntities.Where( myCalls => myCalls.Category == callEntity.Category && myCalls.Choice == callEntity.Choice && myCalls.Detail == callEntity.Detail) .Any(myCalls => myCalls.Status == (int)CallUtil.StatusCode.Active)) { loadingOverlay.Hide(); new UIAlertView(Strings.CallAlreadySent, null, null, "OK", null).Show(); return true; } return false; }
private static void GoToMyCalls(UIViewController vc, CallEntity callEntity) { // Hide the loading screen loadingOverlay.Hide(); // Take the user to My Calls var tabbar = vc.TabBarController; var navController = tabbar.ViewControllers[1]; var myCallsController = (MyCallsViewController)navController.ChildViewControllers[0]; myCallsController.callEntity = callEntity; tabbar.SelectedViewController = navController; }
/// <summary> /// Opdater et kald /// </summary> /// <param name="db">Den delte database PCL</param> /// <param name="callEntity">Kaldet</param> public static void UpdateMyCallToLocalDatabase(SharedLocalDB db, CallEntity callEntity) { if (callEntity != null) { db.UpdateMyCall(callEntity); } }
/// <summary> /// Indlæser et kald fra Web en Patient har foretaget og returner dens status /// </summary> /// <returns>Returnere en string med en status: "0" = Active, "1" = Completed, "2" = Canceled</returns> private static String GetStatusCall(CallEntity callEntity) { CallManager callManager = new CallManager(); return callManager.GetStatusCall(callEntity); }
/// <summary> /// Gemmer alle foretaget kald til PatientApp'ens egen lokale SQL database /// </summary> /// <param name="db">Den delte database PCL</param> /// <param name="calls">Et array med alle kald</param> public static void SaveCallsToLocalDatabase(SharedLocalDB db, CallEntity[] calls) { if (calls != null) { db.SaveMyCalls(calls.ToList()); } }
/// <summary> /// Laver kaldet om til JSON format, da det skal sendes som HTTP content. /// </summary> /// <param name="call">Kald objekt der indeholder properties for hvad kaldet skal indeholde</param> /// <returns>Returner et JSON repræsentation af et kald</returns> public string CreateJSONCall(CallEntity call) { return JsonConvert.SerializeObject(call); }