private void Add_Click(object sender, RoutedEventArgs e)
 {
     using (var db = new PodaciContext())
     {
         var client = db.Add(new Client()).Entity;
         db.SaveChanges();
         Clients.Clients.Add(client);
     }
 }
 private void Add_Click(object sender, RoutedEventArgs e)
 {
     using (var db = new PodaciContext())
     {
         var service = db.Add(new Service()).Entity;
         db.SaveChanges();
         model.Services.Add(service);
     }
 }
 private void Add_Click(object sender, RoutedEventArgs e)
 {
     using (var db = new PodaciContext())
     {
         var clean = db.Add(new CleaningJob {
             ClientId = 1, Date = Date ?? DateTime.Now
         }).Entity;
         db.SaveChanges();
         model.CleaningJobs.Add(clean);
     }
 }
 private void Add_Click(object sender, RoutedEventArgs e)
 {
     using (var db = new PodaciContext())
     {
         var team = db.Add(new Team()).Entity;
         team.CleanerTeams = new ObservableCollection <CleanerTeam>();
         db.SaveChanges();
         Teams.Teams.Add(new TeamsHelper {
             Team = team
         });
     }
 }
        private void OK_Click(object sender, RoutedEventArgs e)
        {
            if (model.RepeatFrequency != 0 && !model.days.Contains(true))
            {
                MessageBox.Show("Repeating day has to be selected!");
                return;
            }

            using (var db = new PodaciContext())
            {
                if (model.RepeatFrequency == 0)
                {
                    if (model.Id != 0)
                    {
                        model.AllDays = 0;
                        db.Update(model);
                        db.SaveChanges();
                    }
                }
                else
                {
                    model.daysToAllDays();
                    if (cleaningJob.RepeatJobId == null)
                    {
                        var RepeatJob = db.Add(model);
                        db.SaveChanges();
                        cleaningJob.RepeatJobId = RepeatJob?.Entity?.Id;
                        db.Update(cleaningJob);
                        db.SaveChanges();
                    }
                    else
                    {
                        db.Update(model);
                        db.SaveChanges();
                    }
                }


                //if (model.days[startDay] == false && cleanJob.Repeating != 0)
                //{
                //    var jobs = db.CleaningJobs.Where(x => x.Id != cleanJob.Id && x.ClientId == cleanJob.ClientId && x.Date >= cleanJob.Date && x.Repeating == cleanJob.Repeating);
                //    foreach (var job in jobs)
                //        db.CleaningJobs.Remove(job);
                //}
            }

            Fun.setRepeatingJobs(cleaningJob.RepeatJobId ?? model.Id, cleaningJob);
            Ok = true;
            Close();
        }
Esempio n. 6
0
 private void Add_Click(object sender, RoutedEventArgs e)
 {
     using (var db = new PodaciContext())
     {
         var cleaner = db.Add(new Cleaner {
             Monday            = true, Tuesday = true, Wednesday = true, Thursday = true, Friday = true, Saturday = true, Sunday = true,
             NotAvailableStart = DateTime.Now, NotAvailableEnd = DateTime.Now, NotAvailableStart2 = DateTime.Now, NotAvailableEnd2 = DateTime.Now,
             HolidayStart      = DateTime.Now,
             HolidayEnd        = DateTime.Now,
             HolidayStart2     = DateTime.Now,
             HolidayEnd2       = DateTime.Now
         }).Entity;
         db.SaveChanges();
         Cleaners.Cleaners.Add(cleaner);
     }
 }
Esempio n. 7
0
        public static void checkAndSaveServiceJobs(List <ServiceJob> newServiceJob, List <ServiceJob> oldServiceJob, PodaciContext db)
        {
            if (newServiceJob == null)
            {
                newServiceJob = new List <ServiceJob>();
            }
            if (oldServiceJob == null)
            {
                oldServiceJob = new List <ServiceJob>();
            }

            List <ServiceJob> toRemove = new List <ServiceJob>();

            foreach (var job in oldServiceJob)
            {
                if (!newServiceJob.Any(x => x.ServiceId == job.ServiceId))
                {
                    toRemove.Add(job);
                }
            }
            if (toRemove.Count > 0)
            {
                db.RemoveRange(toRemove);
                db.SaveChanges();
            }

            foreach (var job in newServiceJob)
            {
                if (!oldServiceJob.Any(x => x.ServiceId == job.ServiceId))
                {
                    db.Add(job);

                    db.SaveChanges();
                    //job.CleaningJob = null;
                }
            }
        }
Esempio n. 8
0
        protected override void OnStartup(StartupEventArgs e)
        {
            ZP.Dbdir    = Directory.GetCurrentDirectory();
            ZP.OldDbdir = $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}\\CleaningRecordsOldDb";
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
            var serviceCollection = new ServiceCollection();

            ConfigureServices(serviceCollection);
            var dir = Directory.GetCurrentDirectory();

            using (var db = new PodaciContext())
            {
                try
                {
                    copyDB(db);
                }
                catch (Exception ex)
                {
                }

                if (!db.Clients.Any())
                {
                    db.Add(new Client {
                        Name = "TestClient", CleaningJobs = new System.Collections.ObjectModel.ObservableCollection <CleaningJob> {
                            new CleaningJob {
                                Location = "Test Location"
                            }
                        }
                    });
                    db.SaveChanges();
                }
                if (!db.Cleaners.Any())
                {
                    db.Add(new Cleaner {
                        Name = "TestCleaner"
                    });
                    db.SaveChanges();
                }

                if (!db.Teams.Any())
                {
                    db.Add(new Team {
                        Name = "TestTeam"
                    });
                    db.SaveChanges();
                }

                if (!db.Services.Any())
                {
                    db.Add(new Service {
                        Name = "Parking Fee", Description = "Parking Fee", Rate = 1.8, Cost = 0
                    });
                    db.Add(new Service {
                        Name = "CCS", Description = "Carpet Cleaning Service", Rate = 65, Cost = 0
                    });
                    db.Add(new Service {
                        Name = "MSR2", Description = "Regular Team Sevice Reduced", Rate = 25, Cost = 0
                    });
                    db.Add(new Service {
                        Name = "Cleaning Service Fee", Description = "Cleaning Service Fee", Rate = 0, Cost = 10
                    });
                    db.Add(new Service {
                        Name = "DEEP", Description = "Deep Cleaning Service", Rate = 0, Cost = 0
                    });
                    db.Add(new Service {
                        Name = "MSO", Description = "Team Service Once Off", Rate = 30, Cost = 0
                    });
                    db.Add(new Service {
                        Name = "MSR", Description = "Regular Team Service", Rate = 30, Cost = 0
                    });
                    db.Add(new Service {
                        Name = "DBS", Description = "Individual General Cleaning Service", Rate = 17.93, Cost = 0
                    });
                    db.SaveChanges();
                }
            }

            //    var builder = new ConfigurationBuilder()
            //     .SetBasePath(Directory.GetCurrentDirectory())
            //     .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

            //    Configuration = builder.Build();

            //    var serviceCollection = new ServiceCollection();
            //    ConfigureServices(serviceCollection);

            //    ServiceProvider = serviceCollection.BuildServiceProvider();

            //    var mainWindow = ServiceProvider.GetRequiredService<MainWindow>();
            //    mainWindow.Show();
        }
Esempio n. 9
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));
            }
        }