static DataWeek LoadWeek(string filePath, DataWeek dataWeek = null) { if (dataWeek == null) { dataWeek = new DataWeek(); dataWeek.FillDefault( GetStartDateForFilePath(filePath)); } // If file of data is exist then read file and fill the array of tasks if (File.Exists(filePath)) { string[] dataDays = File.ReadAllLines(filePath); foreach (var dataDay in dataDays) { if (dataDay == string.Empty) { continue; } // Split the value up half by char '=' (index 0 is a day name, index 1 is data of tasks) var data = Crypt(dataDay).Split('='); DayOfWeek dayOfWeek = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), data[0], true); DataDay day = dataWeek.days[dayOfWeek]; // Split the value up on a tasks by char '*' var dataTasks = data[1].Split('*'); foreach (var task in dataTasks) { if (task == string.Empty) { continue; } // Split the value up by char '!' and get the array of values of class 'DateTask' var values = task.Split('!'); DataTask newTask = new DataTask(values[0], values[1], int.Parse(values[4]), int.Parse(values[2]), bool.Parse(values[3])); day.tasks.Add(newTask); } } } return(dataWeek); }
private void Load(DateTime dateTime, string path) { if (taskStarted) { StopTimer(); } days.Clear(); Day.dragDropDatas.Clear(); /// Create a tasks from the loaded data selectedDataWeek = FileManager.LoadWeek(dateTime, path); switch (applicationMode) { case ApplicationMode.Day: /// Create the day data selectedDataDay = selectedDataWeek.GetDay(dateTime); CreateDayGUI(selectedDataDay); break; case ApplicationMode.Week: /// Create the week data foreach (var d in selectedDataWeek.days) { CreateDayGUI(d.Value); } break; } /// Update the data of interface labelInfoDay.Content = $"The selected date is {dateTime.Day}.{dateTime.Month}.{dateTime.Year}"; taskDescription.Document.Blocks.Clear(); selectedTasks.Clear(); UpdateTimerInfo(); UpdateTotalTime(); UpdateButtonsTimer(); dataChanged = false; }
public override bool Equals(Object obj) { // Check for null values and compare run-time types. if (obj == null || GetType() != obj.GetType()) { return(false); } DataWeek d = (DataWeek)obj; DataDay thisMonday = days[DayOfWeek.Monday]; DataDay otherMonday = d.days[DayOfWeek.Monday]; // Compare only Monday with Monday, because it's easily, than compare all days each other return((thisMonday.date.day == otherMonday.date.day) && (thisMonday.date.month == otherMonday.date.month) && (thisMonday.date.year == otherMonday.date.year)); }
public static DataWeek LoadWeek(DateTime dateTime, string path) { // Getting a days of selected week DateOfWeek[] dates = GetWeek(dateTime); string filePath = $"{path}{dates[0].date.day} {dates[0].date.month} {dates[0].date.year}" + $"-{dates[6].date.day} {dates[6].date.month} {dates[6].date.year}.week"; // Creating a array days of week DataWeek dataWeek = new DataWeek(); // Set default values foreach (var d in dates) { DataDay newDay = new DataDay(d.date); newDay.dayOfWeek = d.dayOfWeek; dataWeek.days.Add(d.dayOfWeek, newDay); } return(LoadWeek(filePath, dataWeek)); }
public static void SaveWeek(DataWeek week, string path) { if (week == null) { return; } string filePath = $"{path}{week.days[DayOfWeek.Monday].date.day} {week.days[DayOfWeek.Monday].date.month} {week.days[DayOfWeek.Monday].date.year}" + $"-{week.days[DayOfWeek.Sunday].date.day} {week.days[DayOfWeek.Sunday].date.month} {week.days[DayOfWeek.Sunday].date.year}.week"; // If an all tasks of week is empty then removing the file if (week.isEmpty && File.Exists(filePath)) { File.Delete(filePath); return; } // Writing a days of week to file StreamWriter stream = new StreamWriter(filePath); foreach (var d in week.days) { if (d.Value.tasks.Count > 0) { string text = $"{d.Key.ToString()}="; foreach (var t in d.Value.tasks) { text += $"{t.TaskName}!{t.Info}!{t.Tomatoes}!{t.IsDone}!{(int)t.TotalTime.TotalSeconds}*"; } stream.WriteLine(Crypt(text)); } } stream.Close(); }
/// <summary> /// Copy a task to custom dates /// </summary> private void CopyTasksInto(SelectedDatesCollection dates) { if (dates == null || dates.Count == 0) { return; } List <DataWeek> weeks = new List <DataWeek>(); // Check if current week was update bool update = false; // Get copies data tasks which need copy var copiesTasks = GetCopiesOfSelectedTasks(); foreach (var d in dates) { // Search a date in a list of loaded weeks int indexWeek = weeks.FindIndex((w) => w.HasDate(d)); // If it's found then to add tasks into a task list if (indexWeek >= 0) { foreach (var t in copiesTasks) { weeks[indexWeek].days[d.DayOfWeek].tasks.Add(t); } } // Otherwise, load a needed week and add it into a list then add task copies else { if (!weeks.Contains(selectedDataWeek) && selectedDataWeek.HasDate(d)) { update = true; dataChanged = false; if (taskStarted) { StopTimer(); } foreach (var t in copiesTasks) { selectedDataWeek.days[d.DayOfWeek].tasks.Add(t); } weeks.Add(selectedDataWeek); } else { DataWeek newWeek = FileManager.LoadWeek(d, GlobalSettings.pathData); foreach (var t in copiesTasks) { newWeek.days[d.DayOfWeek].tasks.Add(t); } weeks.Add(newWeek); } } } // Save changes foreach (var w in weeks) { FileManager.SaveWeek(w, GlobalSettings.pathData); } if (update) { LoadCalendarDate(calendar); } }