protected void OnPropertyChanged(string prop) { if (prop == "Id") { HoursWeekly = Fun.GetCleanerHours(Id, DateTime.Now); } if (PropertyChanged != null) { try { using (var db = new PodaciContext()) { db.Update(this); db.SaveChanges(); } } catch (Exception ex) { MessageBox.Show("Cleaner Update Error: " + ex.Message); } PropertyChanged(this, new PropertyChangedEventArgs(prop)); } }
protected override void OnClosing(CancelEventArgs e) { Fun.overWorked(ClientObject.CleaningJobs); foreach (var cj in ClientObject.CleaningJobs) { if (repeatJobs.ContainsKey(cj.Id) && cj.RepeatJobId != null) { if (cj.changed) { OnlyThisShiftDlg dlg = new OnlyThisShiftDlg(); if (dlg.ShowDialog() == true) { cj.RepeatJob = null; cj.RepeatJobId = null; using (var db = new PodaciContext()) { db.Update(cj); db.SaveChanges(); } } else { Fun.setRepeatingJobs(repeatJobs[cj.Id], cj); } } } } }
protected void OnPropertyChanged(string prop) { if (PropertyChanged != null) { try { using (var db = new PodaciContext()) { db.Update(this); db.SaveChanges(); } } catch (Exception ex) { MessageBox.Show("Client Update Error: " + ex.Message); } PropertyChanged(this, new PropertyChangedEventArgs(prop)); } }
protected void OnPropertyChanged(string prop) { if (prop == "Date" && Date != null) { Week = Fun.getWeek(Date); Day = Fun.getDay(Date); } if (prop == "ClientId") { setLocations(_ClientId); } if (PropertyChanged != null) { if (prop == "Date" && Date != null) { RepeatJob = null; RepeatJobId = null; } else if (prop != "Locations") { if (RepeatJobId != null && RepeatJob != null) { if (!changed) { changed = true; } } } if (prop == "TimeStart" && TimeStart != null) { if (TimeEnd != null) { NoOfHours = ConvertTime(); } } else if (prop == "TimeEnd" && TimeEnd != null) { if (TimeStart != null) { NoOfHours = ConvertTime(); } } if (prop == "TeamId" && TeamId != null) { CleanerId = null; Cleaner = null; } else if (prop == "CleanerId" && CleanerId != null) { TeamId = null; Team = null; } if (CleanerId == 0) { CleanerId = null; Cleaner = null; } if (TeamId == 0) { TeamId = null; Team = null; } if (ServiceId == 0) { ServiceId = null; Service = null; } if (prop == "TimeEnd" || prop == "TimeStart" || prop == "ServiceId") { ConvertAmount(); } try { using (var db = new PodaciContext()) { db.Update(this); db.SaveChanges(); } } catch (Exception ex) { MessageBox.Show("CleaningJob Update Error: " + ex.Message); } PropertyChanged(this, new PropertyChangedEventArgs(prop)); } }
public static void setRepeatingJobs(int RepeatJobId, CleaningJob CleaningJobCopy) { try { if (RepeatJobId == 0) { return; } int iterations = 50; var date = CleaningJobCopy.Date; List <int> ids = new List <int>(); using (var db = new PodaciContext()) { var RepeatJob = db.RepeatJobs .Include(x => x.CleaningJobs).FirstOrDefault(x => x.Id == RepeatJobId); RepeatJob.AllDaysToDays(); //var defaultCleanJob = RepeatJob.CleaningJobs.FirstOrDefault(); int week = getWeek(date); int year = date.Year; int maxWeek = getWeek(new DateTime(year, 12, 31)); List <int> weeks = new List <int> { week }; for (int i = 0; i < iterations + 1; i++) { weeks.Add((weeks[i] + RepeatJob.RepeatFrequency) % (maxWeek + 1)); } List <CleaningJob> toRemove = new List <CleaningJob>(); foreach (var cleanJob in RepeatJob.CleaningJobs) { if (cleanJob.Date >= date) { if (!RepeatJob.days[cleanJob.Day] || !weeks.Contains(cleanJob.Week)) { toRemove.Add(cleanJob); } } } foreach (var c in toRemove) { if (c.Id != CleaningJobCopy.Id) { db.Remove(c); } } db.SaveChanges(); if (RepeatJob.CleaningJobs == null || RepeatJob.CleaningJobs.Count <= 0) { return; } int day = getDay(date); List <DateTime> weekDatetimes = new List <DateTime>(); for (int i = 0; i < 7; i++) { if (RepeatJob.days[i]) { weekDatetimes.Add(date.AddDays(i - day)); } } int datesCount = weekDatetimes.Count; for (int i = 0; i < iterations; i++) { //var watch = System.Diagnostics.Stopwatch.StartNew(); for (int j = 0; j < datesCount; j++) { var cleanjob = RepeatJob.CleaningJobs.FirstOrDefault(x => x.Date.Date == weekDatetimes[j].Date); if (cleanjob == null) { var defaultCleanJob = new CleaningJob(); defaultCleanJob.TeamId = CleaningJobCopy.TeamId; defaultCleanJob.TimeEnd = CleaningJobCopy.TimeEnd; defaultCleanJob.TimeStart = CleaningJobCopy.TimeStart; defaultCleanJob.Location = CleaningJobCopy.Location; defaultCleanJob.NoOfHours = CleaningJobCopy.NoOfHours; defaultCleanJob.ClientId = CleaningJobCopy.ClientId; defaultCleanJob.CleanerId = CleaningJobCopy.CleanerId; defaultCleanJob.ServiceId = CleaningJobCopy.ServiceId; defaultCleanJob.Amount = CleaningJobCopy.Amount; defaultCleanJob.Date = weekDatetimes[j]; defaultCleanJob.RepeatJob = null; defaultCleanJob.RepeatJobId = RepeatJobId; defaultCleanJob.JobStatus = CleaningJobCopy.JobStatus; db.Add(defaultCleanJob); db.SaveChanges(); ids.Add(defaultCleanJob.Id); } else { cleanjob.TeamId = CleaningJobCopy.TeamId; cleanjob.TimeEnd = CleaningJobCopy.TimeEnd; cleanjob.TimeStart = CleaningJobCopy.TimeStart; cleanjob.Location = CleaningJobCopy.Location; cleanjob.NoOfHours = CleaningJobCopy.NoOfHours; cleanjob.ClientId = CleaningJobCopy.ClientId; cleanjob.CleanerId = CleaningJobCopy.CleanerId; cleanjob.ServiceId = CleaningJobCopy.ServiceId; cleanjob.Amount = CleaningJobCopy.Amount; cleanjob.Date = weekDatetimes[j]; cleanjob.JobStatus = CleaningJobCopy.JobStatus; //watch.Reset(); //watch.Start(); if (cleanjob.Id != CleaningJobCopy.Id) { ids.Add(cleanjob.Id); db.Update(cleanjob); } //watch.Stop(); //var elapsedMs2 = watch.ElapsedMilliseconds; //System.Diagnostics.Debug.WriteLine("elapsedMs2= " + elapsedMs2 ); } weekDatetimes[j] = weekDatetimes[j].AddDays(7 * RepeatJob.RepeatFrequency); } } db.SaveChanges(); } using (var db = new PodaciContext()) { var cjTemp = db.CleaningJobs.Include(x => x.ServiceJobs).FirstOrDefault(x => x.Id == CleaningJobCopy.Id); foreach (int id in ids) { var ServiceJobsCopy = new List <ServiceJob>(); foreach (var v in cjTemp.ServiceJobs) { ServiceJobsCopy.Add(new ServiceJob { CleaningJobId = v.CleaningJobId, ServiceId = v.ServiceId }); } if (ServiceJobsCopy != null) { foreach (var v in ServiceJobsCopy) { v.CleaningJobId = id; v.CleaningJob = null; } } var cljTemp = db.CleaningJobs.Include(x => x.ServiceJobs).FirstOrDefault(x => x.Id == id).ServiceJobs; checkAndSaveServiceJobs(ServiceJobsCopy, cljTemp, db); } } } catch (Exception ex) { MessageBox.Show("Error Repeating jobs: " + ex.Message); } }
protected void OnPropertyChanged(string prop) { if (PropertyChanged != null) { if (prop == "Name") { Team.Name = Name; using (var db = new PodaciContext()) { db.Update(Team); db.SaveChanges(); } } else if (prop == "Color") { Team.Color = Color; using (var db = new PodaciContext()) { db.Update(Team); db.SaveChanges(); } } else { bool flag = true; List <int> Cleaners = new List <int>(); if (CleanerId != null) { if (Cleaners.Contains((int)CleanerId)) { flag = false; } Cleaners.Add((int)CleanerId); } if (Cleaner2Id != null) { if (Cleaners.Contains((int)Cleaner2Id)) { flag = false; } Cleaners.Add((int)Cleaner2Id); } if (Cleaner3Id != null) { if (Cleaners.Contains((int)Cleaner3Id)) { flag = false; } Cleaners.Add((int)Cleaner3Id); } if (Cleaner4Id != null) { if (Cleaners.Contains((int)Cleaner4Id)) { flag = false; } Cleaners.Add((int)Cleaner4Id); } if (Cleaner5Id != null) { if (Cleaners.Contains((int)Cleaner5Id)) { flag = false; } Cleaners.Add((int)Cleaner5Id); } if (Cleaner6Id != null) { if (Cleaners.Contains((int)Cleaner6Id)) { flag = false; } Cleaners.Add((int)Cleaner6Id); } if (flag) { using (var db = new PodaciContext()) { List <CleanerTeam> toRemove = new List <CleanerTeam>(); for (int i = 0; i < Team.CleanerTeams?.Count(); i++) { if (!Cleaners.Contains(Team.CleanerTeams[i].CleanerId)) { toRemove.Add(Team.CleanerTeams[i]); } } if (toRemove.Count > 0) { foreach (var CleanerTeam in toRemove) { db.Remove(CleanerTeam); Team.CleanerTeams.Remove(CleanerTeam); } db.SaveChanges(); } flag = false; foreach (int CleanerId in Cleaners) { if (CleanerId != 0 && !Team.CleanerTeams.Any(x => x.CleanerId == CleanerId)) { var CleanerTeam = new CleanerTeam { CleanerId = CleanerId, TeamId = Team.Id }; db.Add(CleanerTeam); Team.CleanerTeams.Add(CleanerTeam); flag = true; } } if (flag) { db.SaveChanges(); } //if (Cleaners.Count < Team.CleanerTeams?.Count()) //{ // var cleanersTemp = Team.CleanerTeams.Select(x => x.CleanerId)?.ToList(); // foreach (var CleanId in cleanersTemp) // { // if (Cleaners.Count == 0 || !Cleaners.Contains(CleanId)) // { // db.Remove(CleanId); // db.SaveChanges(); // } // } //} //else if (Cleaners.Count >= Team.CleanerTeams?.Count()) //{ // var cleanersTemp = Team.CleanerTeams.Select(x => x.CleanerId)?.ToList(); // flag = false; // List<int> cleanerIds = new List<int>(); // foreach (var CleanId in Cleaners) // { // if (cleanersTemp == null || !cleanersTemp.Contains(CleanId)) // { // cleanerIds.Add(CleanId); // flag = true; // } // } // if (flag) // { // int j = 0; // for (int i = 0; i < Team.CleanerTeams?.Count(); i++) // { // if (!Cleaners.Contains(Team.CleanerTeams[i].CleanerId)) // { // db.Remove(Team.CleanerTeams[i]); // db.SaveChanges(); // db.Add(new CleanerTeam { CleanerId = cleanerIds[j], TeamId = Team.Id }); // db.SaveChanges(); // Team.CleanerTeams[i].CleanerId = cleanerIds[j]; // j++; // } // } // if (Cleaners.Count > Team.CleanerTeams?.Count()) // { // for (int i = Team.CleanerTeams.Count(); i < Cleaners.Count; i++) // { // var cleanTeam = new CleanerTeam { CleanerId = cleanerIds[j], TeamId = Team.Id }; // Team.CleanerTeams.Add(cleanTeam); // db.Add(cleanTeam); // db.SaveChanges(); // j++; // } // } // } //} } } } PropertyChanged(this, new PropertyChangedEventArgs(prop)); } }