Example #1
0
        /// <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;

        }
Example #2
0
	    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());
            }
	    }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
	    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();
	    }
Example #6
0
        public MyCallsSource(CallEntity callEntity, MyCallsViewController vc)
        {

            if (vc != null)
            {
                this.vc = vc;
            }

            SetCallEntities(callEntity);
        }
Example #7
0
 public void UpdateMyCall(CallEntity callEntity)
 {
     try
     {
         db.Update(callEntity);
     }
     catch (Exception e)
     {
     }
 }
Example #8
0
        public void UpdateMyCall(CallEntity callEntity)
        {
            try
            {
                db.Update(callEntity);

            }
            catch (Exception e)
            {
                
            }
        }
Example #9
0
        /// <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;
        }
Example #10
0
        /// <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;
        }
Example #11
0
        /// <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();
        }
Example #12
0
        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()));
        }
Example #13
0
        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);
        }
Example #14
0
        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;
        }
Example #15
0
        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;
        }
Example #16
0
        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;
        }
Example #17
0
 /// <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);
     }
 }
Example #18
0
        /// <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);
        }
Example #19
0
 /// <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());
     } 
 }
Example #20
0
 /// <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);
 }