Example #1
0
        /// <summary>
        /// Count of rooms (isRoom[i] == 1)
        /// </summary>
        public static int CountOfRooms(Context context)
        {
            int countOfRooms = 0;

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);
            SQLiteDatabase   db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            ICursor          roomCursor = db.Query("ROOM_TABLE",
                                                   new string[] { "_id" },
                                                   null, null, null, null, null);

            countOfRooms = roomCursor.Count - 2;

            roomCursor.Close();
            db.Close();

            return(countOfRooms);
        }
Example #2
0
        public static int CountOfCleaningTask(Context context, int roomId)
        {
            int countOfCleaningTask = 0;

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);
            SQLiteDatabase   db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            ICursor          taskCursor = db.Query("CLEANING_TASK_TABLE",
                                                   new string[] { "_id" },
                                                   "ROOM_ID = ?", new string[] { roomId.ToString() }, null, null, null);

            countOfCleaningTask = taskCursor.Count;

            taskCursor.Close();
            db.Close();

            return(countOfCleaningTask);
        }
Example #3
0
        public static string GetRoomTitle(Context context, int roomId)
        {
            string roomTitle = "";

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);
            SQLiteDatabase   db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            ICursor          roomCursor = db.Query("ROOM_TABLE",
                                                   new string[] { "TITLE" },
                                                   "_id = ?", new string[] { roomId.ToString() }, null, null, null);

            if (roomCursor.MoveToFirst())
            {
                roomTitle = roomCursor.GetString(0);
            }

            roomCursor.Close();
            db.Close();

            return(roomTitle);
        }
Example #4
0
        public static int GetRoomImageId(Context context, int roomId)
        {
            int roomImageId = 0;

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);
            SQLiteDatabase   db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            ICursor          roomCursor = db.Query("ROOM_TABLE",
                                                   new string[] { "IMAGE_ID" },
                                                   "_id = ?", new string[] { roomId.ToString() }, null, null, null);

            if (roomCursor.MoveToFirst())
            {
                roomImageId = roomCursor.GetInt(0);
            }

            roomCursor.Close();
            db.Close();

            return(roomImageId);
        }
Example #5
0
        public int GetRoomId(Context context)
        {
            int roomId = 0;

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);

            db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            taskCursor = db.Query("CLEANING_TASK_TABLE",
                                  new string[] { "ROOM_ID" },
                                  "_id = ?", new string[] { TaskId.ToString() }, null, null, null);

            if (taskCursor.MoveToFirst())
            {
                roomId = taskCursor.GetInt(0);
            }

            taskCursor.Close();
            db.Close();

            return(roomId);
        }
Example #6
0
        public void GetRoomTasksFromDatabase(int roomId)
        {
            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);

            db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            taskCursor = db.Query("CLEANING_TASK_TABLE",
                                  new string[] { "_id", "TIME_OF_CLEANING", "CLEANNESS", "TITLE" },
                                  "ROOM_ID = ?", new string[] { roomId.ToString() }, null, null, null);

            taskIds             = new int[taskCursor.Count];
            tasksTimeOfCleaning = new int[taskCursor.Count];
            tasksCleanness      = new int[taskCursor.Count];
            taskTitles          = new string[taskCursor.Count];

            if (taskCursor.MoveToFirst())
            {
                taskIds[0]             = taskCursor.GetInt(0);
                tasksTimeOfCleaning[0] = taskCursor.GetInt(1);
                tasksCleanness[0]      = taskCursor.GetInt(2);
                taskTitles[0]          = taskCursor.GetString(3);
            }


            for (int i = 1; i < taskCursor.Count; i++)
            {
                if (taskCursor.MoveToNext())
                {
                    taskIds[i]             = taskCursor.GetInt(0);
                    tasksTimeOfCleaning[i] = taskCursor.GetInt(1);
                    tasksCleanness[i]      = taskCursor.GetInt(2);
                    taskTitles[i]          = taskCursor.GetString(3);
                }
            }

            taskCursor.Close();
            db.Close();
        }
        private void GetAllTasksFromDatabase()
        {
            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);

            db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            taskCursor = db.Query("CLEANING_TASK_TABLE",
                                  new string[] { "_id", "TITLE", "ROOM_ID", "YEAR", "MONTH", "DAY_OF_MONTH", "DATE_DEFAULT", "HOUR", "MINUTE", "YEAR_OF_CHANGE", "MONTH_OF_CHANGE", "DAY_OF_MONTH_OF_CHANGE",
                                                 "PERIODICITY", "TIME_OF_CLEANING", "CLEANNESS" },
                                  null, null, null, null, null);


            taskIds             = new int[taskCursor.Count];
            tasksTimeOfCleaning = new int[taskCursor.Count];
            tasksCleanness      = new int[taskCursor.Count];
            taskTitles          = new string[taskCursor.Count];

            roomIds                     = new int[taskCursor.Count];
            year                        = new int[taskCursor.Count];
            month                       = new int[taskCursor.Count];
            dayOfMonth                  = new int[taskCursor.Count];
            dateDefault                 = new int[taskCursor.Count];
            yearOfChange                = new int[taskCursor.Count];
            monthOfChange               = new int[taskCursor.Count];
            dayOfMonthOfChange          = new int[taskCursor.Count];
            periodicity                 = new int[taskCursor.Count];
            hour                        = new int[taskCursor.Count];
            minute                      = new int[taskCursor.Count];
            dateOfTaskString            = new string[taskCursor.Count]; //Цю штуку ніде не опрацьовуємо
            dateTimePlusPeriodicity     = new DateTime[taskCursor.Count];
            tasksCleannessInPercentages = new int[taskCursor.Count];

            if (taskCursor.MoveToFirst())
            {
                taskIds[0]             = taskCursor.GetInt(0);
                taskTitles[0]          = taskCursor.GetString(1);
                roomIds[0]             = taskCursor.GetInt(2);
                year[0]                = taskCursor.GetInt(3);
                month[0]               = taskCursor.GetInt(4);
                dayOfMonth[0]          = taskCursor.GetInt(5);
                dateDefault[0]         = taskCursor.GetInt(6);
                hour[0]                = taskCursor.GetInt(7);
                minute[0]              = taskCursor.GetInt(8);
                yearOfChange[0]        = taskCursor.GetInt(9);
                monthOfChange[0]       = taskCursor.GetInt(10);
                dayOfMonthOfChange[0]  = taskCursor.GetInt(11);
                periodicity[0]         = taskCursor.GetInt(12);
                tasksTimeOfCleaning[0] = taskCursor.GetInt(13);
                tasksCleanness[0]      = taskCursor.GetInt(14);
            }

            for (int i = 1; i < taskCursor.Count; i++)
            {
                if (taskCursor.MoveToNext())
                {
                    taskIds[i]             = taskCursor.GetInt(0);
                    taskTitles[i]          = taskCursor.GetString(1);
                    roomIds[i]             = taskCursor.GetInt(2);
                    year[i]                = taskCursor.GetInt(3);
                    month[i]               = taskCursor.GetInt(4);
                    dayOfMonth[i]          = taskCursor.GetInt(5);
                    dateDefault[i]         = taskCursor.GetInt(6);
                    hour[i]                = taskCursor.GetInt(7);
                    minute[i]              = taskCursor.GetInt(8);
                    yearOfChange[i]        = taskCursor.GetInt(9);
                    monthOfChange[i]       = taskCursor.GetInt(10);
                    dayOfMonthOfChange[i]  = taskCursor.GetInt(11);
                    periodicity[i]         = taskCursor.GetInt(12);
                    tasksTimeOfCleaning[i] = taskCursor.GetInt(13);
                    tasksCleanness[i]      = taskCursor.GetInt(14);
                }
            }

            taskCursor.Close();
            db.Close();

            InitializeTasksCleannessInPercentages();
        }
Example #8
0
        /// <summary>
        /// Групуємо масиви даних по кімнатам таким чином, щоб першим в списку стояв
        /// розділ для задач для всього будинку, далі йшли усі кімнати, а в кінці був розділ катеорії "Інше"
        /// </summary>
        public void FindRightOrderOfRoomTitles(Context context)
        {
            //Допоміжні масиви
            string[] roomTitlesSpare;
            int[]    roomIdsSpare;
            int[]    isRoomSpare;
            int[]    roomImageIdsSpare;

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);

            db         = rationalCleaningDatabaseHelper.ReadableDatabase;
            roomCursor = db.Query("ROOM_TABLE",
                                  new string[] { "_id", "IS_ROOM", "TITLE", "IMAGE_ID" },
                                  null, null, null, null, null);

            roomTitles   = new string[roomCursor.Count];
            roomIds      = new int[roomCursor.Count];
            isRoom       = new int[roomCursor.Count];
            roomImageIds = new int[roomCursor.Count];

            roomTitlesSpare   = new string[roomCursor.Count];
            roomIdsSpare      = new int[roomCursor.Count];
            isRoomSpare       = new int[roomCursor.Count];
            roomImageIdsSpare = new int[roomCursor.Count];

            if (roomCursor.MoveToFirst())
            {
                roomIdsSpare[0]      = roomCursor.GetInt(0);
                isRoomSpare[0]       = roomCursor.GetInt(1);
                roomTitlesSpare[0]   = roomCursor.GetString(2);
                roomImageIdsSpare[0] = roomCursor.GetInt(3);
            }

            for (int i = 1; i < roomCursor.Count; i++)
            {
                if (roomCursor.MoveToNext())
                {
                    roomIdsSpare[i]      = roomCursor.GetInt(0);
                    isRoomSpare[i]       = roomCursor.GetInt(1);
                    roomTitlesSpare[i]   = roomCursor.GetString(2);
                    roomImageIdsSpare[i] = roomCursor.GetInt(3);
                }
            }

            roomCursor.Close();
            db.Close();

            int counterTasksForWholeApartement = 0;
            int counterAnotherTasks            = 0;

            for (int i = 0; i < roomIdsSpare.Length; i++)
            {
                if (isRoomSpare[i] == 0 && roomTitlesSpare[i] == context.GetString(Resource.String.another_tasks_text))
                {
                    counterAnotherTasks = i;
                }

                if (isRoomSpare[i] == 0 && roomTitlesSpare[i] == context.GetString(Resource.String.tasks_for_whole_apartement_text))
                {
                    counterTasksForWholeApartement = i;
                }
            }

            roomTitles[0]   = roomTitlesSpare[counterTasksForWholeApartement];
            roomIds[0]      = roomIdsSpare[counterTasksForWholeApartement];
            isRoom[0]       = isRoomSpare[counterTasksForWholeApartement];
            roomImageIds[0] = roomImageIdsSpare[counterTasksForWholeApartement];

            roomTitles[roomTitles.Length - 1] = roomTitlesSpare[counterAnotherTasks];
            roomIds[roomIds.Length - 1]       = roomIdsSpare[counterAnotherTasks];
            isRoom[roomIds.Length - 1]        = isRoomSpare[counterAnotherTasks];
            roomImageIds[roomIds.Length - 1]  = roomImageIdsSpare[counterAnotherTasks];

            int counter = 1;

            for (int i = 0; i < roomTitlesSpare.Length; i++)
            {
                if (i != counterTasksForWholeApartement && i != counterAnotherTasks)
                {
                    roomTitles[counter]   = roomTitlesSpare[i];
                    roomIds[counter]      = roomIdsSpare[i];
                    isRoom[counter]       = isRoomSpare[i];
                    roomImageIds[counter] = roomImageIdsSpare[i];
                    counter++;
                }
            }
        }
Example #9
0
        public void CalculateRoomCleannessAndTimeOfRoomCleaning(Context context)
        {
            FindRightOrderOfRoomTitles(context);

            timeOfRoomCleaning = new int[roomIds.Length];
            roomCleanness      = new int[roomIds.Length];

            for (int i = 0; i < roomTitles.Length; i++)
            {
                timeOfRoomCleaning[i] = 0;
                roomCleanness[i]      = 100; //За замовчуванням якщо для кімнати ще не створено задач, то її чистота рівна 100%
            }

            SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(context);
            SQLiteDatabase   db = rationalCleaningDatabaseHelper.ReadableDatabase;

            try
            {
                for (int i = 0; i < roomIds.Length; i++)
                {
                    int countOfTaskForSomeRoomId; //Кількість завдань для конкретної кімнати

                    int[] tasksTimeOfCleaning;
                    int[] tasksCleanness;

                    ICursor taskCursor = db.Query("CLEANING_TASK_TABLE",
                                                  new string[] { "TIME_OF_CLEANING", "CLEANNESS" },
                                                  "ROOM_ID = ?", new string[] { roomIds[i].ToString() }, null, null, null);

                    if (taskCursor.Count != 0)
                    {
                        countOfTaskForSomeRoomId = taskCursor.Count;

                        tasksTimeOfCleaning = new int[taskCursor.Count];
                        tasksCleanness      = new int[taskCursor.Count];

                        if (taskCursor.MoveToFirst())
                        {
                            tasksTimeOfCleaning[0] = taskCursor.GetInt(0);
                            tasksCleanness[0]      = taskCursor.GetInt(1);
                        }

                        for (int j = 1; j < taskCursor.Count; j++)
                        {
                            if (taskCursor.MoveToNext())
                            {
                                tasksTimeOfCleaning[j] = taskCursor.GetInt(0);
                                tasksCleanness[j]      = taskCursor.GetInt(1);
                            }
                        }

                        taskCursor.Close();

                        roomCleanness[i] -= 100; //На початку ми встановлювали рівень 100% як рівень за замовчуванням, а зараз нам потрібно буде рахувати від нуля.
                        for (int j = 0; j < tasksTimeOfCleaning.Length; j++)
                        {
                            timeOfRoomCleaning[i] += tasksTimeOfCleaning[j];
                            roomCleanness[i]      += tasksCleanness[j];
                        }

                        double doubleRoomCleanness = (double)roomCleanness[i] / taskCursor.Count * 100D;
                        roomCleanness[i] = Convert.ToInt16(Math.Round(doubleRoomCleanness, 0));
                    }

                    taskCursor.Close();
                }
            }
            catch (Exception)
            {
            }

            db.Close();
        }
Example #10
0
        private bool isTaskTitleChanged = false; //Це поле знадобиться тоді, коли буде йти опрацювання OnSavedInstanceState

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.create_cleaning_task);

            View view1 = FindViewById <View>(Resource.Id.line_view1);

            view1.SetBackgroundColor(new Android.Graphics.Color(224, 224, 224));

            View view2 = FindViewById <View>(Resource.Id.line_view2);

            view2.SetBackgroundColor(new Android.Graphics.Color(224, 224, 224));

            View view3 = FindViewById <View>(Resource.Id.line_view3);

            view3.SetBackgroundColor(new Android.Graphics.Color(224, 224, 224));

            View view4 = FindViewById <View>(Resource.Id.line_view4);

            view4.SetBackgroundColor(new Android.Graphics.Color(224, 224, 224));

            View view5 = FindViewById <View>(Resource.Id.line_view5);

            view5.SetBackgroundColor(new Android.Graphics.Color(224, 224, 224));

            timeTextView = FindViewById <TextView>(Resource.Id.time_textview);
            dateTextView = FindViewById <TextView>(Resource.Id.date_textview);

            timeTextView.Click += TimeTextView_Click;
            dateTextView.Click += DateTextView_Click;

            taskRecycler = FindViewById <Android.Support.V7.Widget.RecyclerView>(Resource.Id.task_reсycler);
            roomSpinner  = FindViewById <Spinner>(Resource.Id.room_spinner);

            periodicityEditText = FindViewById <EditText>(Resource.Id.periodicity_edit_text);

            periodicityEditText.Text = periodicity.ToString();

            timeOfCleaningEditText = FindViewById <EditText>(Resource.Id.time_of_cleaning_edit_text);

            timeOfCleaningEditText.Text = timeOfCleaning.ToString();


            roomId = Intent.GetIntExtra(IntentManagement.IntentManagement.ROOM_ID, -1);
            taskId = Intent.GetIntExtra(RoomManagement.TASK_ID, -2); //-2 за дефолтом присвоюємо тому, що -1 уже забито під ще не створену задачу. коли вилізе -2 ми відразу побачимо помилку

            captions     = new string[1];
            imagesId     = new int[1];
            descriptions = new string[1];

            descriptions[0] = GetString(Resource.String.click_to_edit_text);

            RoomDatabaseManagement roomDatabaseManagement = new RoomDatabaseManagement();

            roomDatabaseManagement.FindRightOrderOfRoomTitles(this);
            roomIds    = roomDatabaseManagement.GetRoomIds();
            roomTitles = roomDatabaseManagement.GetRoomTitles();
            //roomImageIds = roomDatabaseManagement.GetRoomImageIds();

            roomSpinner.ItemSelected += RoomSpinner_ItemSelected;


            if (taskId == -1)     //taskId == -1 означає (якщо це true), що задача ще не створена
            {
                if (roomId == -1) //Коли ми створюємо задачу переходячи до створення із головної сторінки (наприклад), а не з активності конкретної кімнати
                {
                    var spinnerAdapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, roomTitles);
                    roomSpinner.Adapter = spinnerAdapter;
                    roomId = roomIds[0];
                }
                else
                {
                    var spinnerAdapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, roomTitles);
                    roomSpinner.Adapter = spinnerAdapter;

                    int spinnerCounter = 0;
                    for (int i = 0; i < roomTitles.Length; i++)
                    {
                        if (roomId == roomIds[i])
                        {
                            spinnerCounter = i;
                            break;
                        }
                    }

                    roomSpinner.SetSelection(spinnerCounter);
                }

                imagesId[0] = DatabaseManagement.RoomDatabaseManagement.GetRoomImageId(this, roomId);

                countOfCleaningTask = DatabaseManagement.CleaningTaskDatabaseManagement.CountOfCleaningTask(this, roomId);

                taskTitle   = GetString(Resource.String.task_title) + (countOfCleaningTask + 1).ToString();
                captions[0] = taskTitle;
            }
            else
            {
                var spinnerAdapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, roomTitles);
                roomSpinner.Adapter = spinnerAdapter;

                int spinnerCounter = 0;
                for (int i = 0; i < roomTitles.Length; i++)
                {
                    if (roomId == roomIds[i])
                    {
                        spinnerCounter = i;
                        break;
                    }
                }

                roomSpinner.SetSelection(spinnerCounter);

                SQLiteOpenHelper rationalCleaningDatabaseHelper = new RationalCleaningDatabaseHelper(this);
                db         = rationalCleaningDatabaseHelper.ReadableDatabase;
                taskCursor = db.Query("CLEANING_TASK_TABLE",
                                      new string[] { "TITLE", "YEAR", "MONTH", "DAY_OF_MONTH", "DATE_DEFAULT", "HOUR", "MINUTE", "PERIODICITY", "TIME_OF_CLEANING" },
                                      "_id = ?", new string[] { taskId.ToString() }, null, null, null);

                if (taskCursor.MoveToFirst())
                {
                    taskTitle           = taskCursor.GetString(0);
                    year                = taskCursor.GetInt(1);
                    month               = taskCursor.GetInt(2);
                    dayOfMonth          = taskCursor.GetInt(3);
                    dateDefault         = taskCursor.GetInt(4);
                    hour                = taskCursor.GetInt(5);
                    minute              = taskCursor.GetInt(6);
                    periodicity         = taskCursor.GetInt(7);
                    timeOfCleaning      = taskCursor.GetInt(8);
                    dateDefaultOriginal = dateDefault;
                }

                taskCursor.Close();
                db.Close();

                captions[0] = taskTitle;

                if (hour != -1)
                {
                    TimeToFormat(hour, minute);
                }

                if (dateDefault == 0)
                {
                    DateToFormat(year, month, dayOfMonth);
                }

                periodicityEditText.Text    = periodicity.ToString();
                timeOfCleaningEditText.Text = timeOfCleaning.ToString();

                imagesId[0] = DatabaseManagement.RoomDatabaseManagement.GetRoomImageId(this, roomId);
            }


            #region Висувний список та Action Bar
            mToolBar = FindViewById <SupportToolbar>(Resource.Id.toolBar);
            SetSupportActionBar(mToolBar);

            mActionBar = SupportActionBar;
            mActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);
            mActionBar.SetHomeButtonEnabled(true);
            mActionBar.SetDisplayHomeAsUpEnabled(true);

            mDrawerLayout   = FindViewById <DrawerLayout>(Resource.Id.drawer_layout);
            mNavigationView = FindViewById <NavigationView>(Resource.Id.nav_view);

            if (mNavigationView != null)
            {
                SetUpDrawerContent(mNavigationView);
            }
            #endregion


            UpdateCaptionedImagesAdapter();
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            taskRecycler.SetLayoutManager(linearLayoutManager);
            taskRecycler.NestedScrollingEnabled = false;


            saveButton        = FindViewById <Button>(Resource.Id.save_button);
            saveButton.Click += SaveButton_Click;
        }