/// <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); }
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); }
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); }
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); }
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); }
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(); }
/// <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++; } } }
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(); }
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; }