Beispiel #1
0
        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);
                 }
             }
         }
     }
 }
Beispiel #3
0
        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));
            }
        }
Beispiel #5
0
        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));
            }
        }