예제 #1
0
        public override void Push(List <Day> days)
        {
            logger.Info($"Repushing to server.........count = {days.Count()}");
            float totalDays     = days.Count;
            float completedDays = 0;

            days = days.OrderBy(d => d.Date).ToList();

            using (SQLiteCommand cmd = _connection.CreateCommand())
            {
                foreach (Day day in days)
                {
                    cmd.Parameters.Clear();
                    cmd.CommandText = $"DELETE FROM [{DayTableName}] WHERE Date = @Date";
                    cmd.Parameters.Add(new SQLiteParameter("Date", DateSqLite(day.Date)));
                    cmd.ExecuteNonQuery();

                    cmd.CommandText = $"DELETE FROM [{TimeTableName}] WHERE Date = @Date";
                    cmd.ExecuteNonQuery();
                }

                foreach (Day day in days)
                {
                    cmd.Parameters.Clear();
                    cmd.CommandText = $"INSERT INTO [{DayTableName}] VALUES(@Date, @Details)";
                    cmd.Parameters.Add(new SQLiteParameter("Date", DateSqLite(day.Date.Date)));
                    cmd.Parameters.Add(new SQLiteParameter("Details", day.Details));
                    cmd.ExecuteNonQuery();

                    foreach (Time time in day.Times)
                    {
                        cmd.Parameters.Clear();
                        cmd.CommandText = $"INSERT INTO [{TimeTableName}] VALUES(@Date, @TimeIn, @TimeOut, @Key)";
                        cmd.Parameters.Add(new SQLiteParameter("Date", DateSqLite(time.TimeIn.Date)));
                        cmd.Parameters.Add(new SQLiteParameter("TimeIn", DateTimeSqLite(time.TimeIn)));
                        cmd.Parameters.Add(new SQLiteParameter("TimeOut", DateTimeSqLite(time.TimeOut)));
                        cmd.Parameters.Add(new SQLiteParameter("Key", time.Key));
                        cmd.ExecuteNonQuery();
                    }

                    ProgressChangedEvent?.Invoke(completedDays++ / totalDays * 100f);
                }
            }
            ProgressFinishEvent?.Invoke();
            logger.Info($"Repushing to server.........count = {days.Count()} FINISHED!!!");
        }
예제 #2
0
 private void OnProgressFinishEvent() => ProgressFinishEvent?.Invoke();
예제 #3
0
        public override void Push(List <Day> days)
        {
            logger.Info($"Repushing to server.........count = {days.Count()}");

            if (ServerState != State.Connected)
            {
                throw new Exception("Not Connected!");
            }

            float totalDays     = days.Count;
            float completedDays = 0;

            days = days.OrderBy(d => d.Date).ToList();

            using (MySqlCommand cmd = _connection.CreateCommand())
            {
                try
                {
                    foreach (Day day in days)
                    {
                        // remove day
                        cmd.Parameters.Clear();
                        cmd.CommandText = $"DELETE FROM `{DayTableName}` WHERE Date = @Date";
                        cmd.Parameters.Add(new MySqlParameter("Date", DateSqLite(day.Date)));
                        cmd.ExecuteNonQuery();

                        cmd.CommandText = $"DELETE FROM `{TimeTableName}` WHERE Date = @Date";
                        cmd.ExecuteNonQuery();
                    }

                    foreach (Day day in days) // insert all days and times in range
                    {
                        // re-push day
                        cmd.Parameters.Clear();
                        cmd.CommandText = $"INSERT INTO `{DayTableName}` VALUES(@Date, @Details)";
                        cmd.Parameters.Add(new MySqlParameter("Date", DateSqLite(day.Date.Date)));
                        cmd.Parameters.Add(new MySqlParameter("Details", day.Details));
                        cmd.ExecuteNonQuery();

                        foreach (Time time in day.Times)
                        {
                            {
                                cmd.Parameters.Clear();
                                cmd.CommandText = $"INSERT INTO `{TimeTableName}` VALUES(@Date, @TimeIn, @TimeOut, @Key)";
                                cmd.Parameters.Add(new MySqlParameter("Date", DateSqLite(time.TimeIn.Date)));
                                cmd.Parameters.Add(new MySqlParameter("TimeIn", DateTimeSqLite(time.TimeIn)));
                                cmd.Parameters.Add(new MySqlParameter("TimeOut", DateTimeSqLite(time.TimeOut)));
                                cmd.Parameters.Add(new MySqlParameter("Key", time.Key));
                                cmd.ExecuteNonQuery();
                            }
                        }

                        ProgressChangedEvent?.Invoke(completedDays++ / totalDays * 100f);
                    }
                    ProgressFinishEvent?.Invoke();
                }
                catch (Exception e)
                {
                    logger.Info("\n\n----------------MYSLQ RePushToServer EXCEPTION!!!----------------\n" + e);
                }
            }

            logger.Info($"Repushing to server.........count = {days.Count()} FINISHED!!!");
        }