コード例 #1
0
ファイル: DateTimeTests.cs プロジェクト: roji/Npgsql
        public void ReadDate()
        {
            // TODO: Decide on the DateTime kind (#346)
            var expectedDateTime = new DateTime(2002, 3, 4, 0, 0, 0, 0, DateTimeKind.Unspecified);
            var expectedNpgsqlDate = new NpgsqlDate(expectedDateTime);
            ExecuteNonQuery("INSERT INTO data (field_date) VALUES ('2002-03-04')");
            var cmd = new NpgsqlCommand("SELECT '2002-03-04'::DATE", Conn);
            var reader = cmd.ExecuteReader();
            reader.Read();

            // Regular type (DateTime)
            Assert.That(reader.GetFieldType(0), Is.EqualTo(typeof (DateTime)));
            Assert.That(reader.GetDateTime(0), Is.EqualTo(expectedDateTime));
            Assert.That(reader.GetFieldValue<DateTime>(0), Is.EqualTo(expectedDateTime));
            Assert.That(reader[0], Is.EqualTo(expectedDateTime));
            Assert.That(reader.GetValue(0), Is.EqualTo(expectedDateTime));

            // Provider-specific type (NpgsqlDate)
            Assert.That(reader.GetDate(0), Is.EqualTo(expectedNpgsqlDate));
            Assert.That(reader.GetProviderSpecificFieldType(0), Is.EqualTo(typeof(NpgsqlDate)));
            Assert.That(reader.GetProviderSpecificValue(0), Is.EqualTo(expectedNpgsqlDate));
            Assert.That(reader.GetFieldValue<NpgsqlDate>(0), Is.EqualTo(expectedNpgsqlDate));

            cmd.Dispose();
        }
コード例 #2
0
ファイル: DateTimeTests.cs プロジェクト: Emill/Npgsql
 public void DateSpecial(NpgsqlDate value)
 {
     using (var cmd = new NpgsqlCommand("SELECT @p", Conn)) {
         cmd.Parameters.Add(new NpgsqlParameter { ParameterName = "p", Value = value });
         using (var reader = cmd.ExecuteReader()) {
             reader.Read();
             Assert.That(reader.GetProviderSpecificValue(0), Is.EqualTo(value));
             Assert.That(() => reader.GetDateTime(0), Throws.Exception);
         }
         Assert.That(ExecuteScalar("SELECT 1"), Is.EqualTo(1));
     }
 }
コード例 #3
0
ファイル: TypesTests.cs プロジェクト: sanvel62/Npgsql2
        public void NpgsqlDateConstructors()
        {
            NpgsqlDate date;
            DateTime dateTime;
            System.Globalization.Calendar calendar = new System.Globalization.GregorianCalendar();

            date = new NpgsqlDate();
            Assert.AreEqual(1, date.Day);
            Assert.AreEqual(DayOfWeek.Monday, date.DayOfWeek);
            Assert.AreEqual(1, date.DayOfYear);
            Assert.AreEqual(false, date.IsLeapYear);
            Assert.AreEqual(1, date.Month);
            Assert.AreEqual(1, date.Year);

            dateTime = new DateTime(2009, 5, 31);
            date = new NpgsqlDate(dateTime);
            Assert.AreEqual(dateTime.Day, date.Day);
            Assert.AreEqual(dateTime.DayOfWeek, date.DayOfWeek);
            Assert.AreEqual(dateTime.DayOfYear, date.DayOfYear);
            Assert.AreEqual(calendar.IsLeapYear(2009), date.IsLeapYear);
            Assert.AreEqual(dateTime.Month, date.Month);
            Assert.AreEqual(dateTime.Year, date.Year);

            //Console.WriteLine(new DateTime(2009, 5, 31).Ticks);
            //Console.WriteLine((new DateTime(2009, 5, 31) - new DateTime(1, 1, 1)).TotalDays);
            // 2009-5-31
            dateTime = new DateTime(633793248000000000); // ticks since 1 Jan 1
            date = new NpgsqlDate(733557); // days since 1 Jan 1
            Assert.AreEqual(dateTime.Day, date.Day);
            Assert.AreEqual(dateTime.DayOfWeek, date.DayOfWeek);
            Assert.AreEqual(dateTime.DayOfYear, date.DayOfYear);
            Assert.AreEqual(calendar.IsLeapYear(2009), date.IsLeapYear);
            Assert.AreEqual(dateTime.Month, date.Month);
            Assert.AreEqual(dateTime.Year, date.Year);

            // copy previous value.  should get same result
            date = new NpgsqlDate(date);
            Assert.AreEqual(dateTime.Day, date.Day);
            Assert.AreEqual(dateTime.DayOfWeek, date.DayOfWeek);
            Assert.AreEqual(dateTime.DayOfYear, date.DayOfYear);
            Assert.AreEqual(calendar.IsLeapYear(2009), date.IsLeapYear);
            Assert.AreEqual(dateTime.Month, date.Month);
            Assert.AreEqual(dateTime.Year, date.Year);
        }
コード例 #4
0
        public static ObservableCollection <Route> GetRoutes(string query)
        {
            using (var connection =
                       new NpgsqlConnection(Configuration.ConnectionString))
            {
                connection.Open();
                using (var command = new NpgsqlCommand(query, connection))
                {
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.HasRows)
                        {
                            return(new ObservableCollection <Route>());
                        }
                        ObservableCollection <Route> routes =
                            new ObservableCollection <Route>();
                        while (reader.Read())
                        {
                            int        routeId        = reader.GetInt32(0);
                            string     hotel          = reader.GetString(1);
                            string     from           = reader.GetString(2);
                            string     to             = reader.GetString(3);
                            NpgsqlDate date           = reader.GetDate(4);
                            int        duration       = reader.GetInt32(5);
                            bool       meels          = reader.GetBoolean(6);
                            string     transport      = reader.GetString(7);
                            double     hotelPrice     = reader.GetDouble(8);
                            double     transportPrice = reader.GetDouble(9);

                            routes.Add(new Route(routeId, hotel, from, to,
                                                 new DateTime(date.Year, date.Month, date.Day),
                                                 duration, meels, transport, hotelPrice + transportPrice,
                                                 hotelPrice, transportPrice));
                        }

                        return(routes);
                    }
                }
            }
        }
コード例 #5
0
        public void Date()
        {
            var dateTime   = new DateTime(2002, 3, 4, 0, 0, 0, 0, DateTimeKind.Unspecified);
            var npgsqlDate = new NpgsqlDate(dateTime);

            using (var cmd = new NpgsqlCommand("SELECT @p1, @p2, @p3", Conn))
            {
                var p1 = new NpgsqlParameter("p1", NpgsqlDbType.Date);
                var p2 = new NpgsqlParameter("p2", DbType.Date);
                var p3 = new NpgsqlParameter {
                    ParameterName = "p3", Value = npgsqlDate
                };
                Assert.That(p3.NpgsqlDbType, Is.EqualTo(NpgsqlDbType.Date));
                Assert.That(p3.DbType, Is.EqualTo(DbType.Date));
                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                p1.Value = p2.Value = npgsqlDate;
                using (var reader = cmd.ExecuteReader())
                {
                    reader.Read();

                    for (var i = 0; i < cmd.Parameters.Count; i++)
                    {
                        // Regular type (DateTime)
                        Assert.That(reader.GetFieldType(i), Is.EqualTo(typeof(DateTime)));
                        Assert.That(reader.GetDateTime(i), Is.EqualTo(dateTime));
                        Assert.That(reader.GetFieldValue <DateTime>(i), Is.EqualTo(dateTime));
                        Assert.That(reader[i], Is.EqualTo(dateTime));
                        Assert.That(reader.GetValue(i), Is.EqualTo(dateTime));

                        // Provider-specific type (NpgsqlDate)
                        Assert.That(reader.GetDate(i), Is.EqualTo(npgsqlDate));
                        Assert.That(reader.GetProviderSpecificFieldType(i), Is.EqualTo(typeof(NpgsqlDate)));
                        Assert.That(reader.GetProviderSpecificValue(i), Is.EqualTo(npgsqlDate));
                        Assert.That(reader.GetFieldValue <NpgsqlDate>(i), Is.EqualTo(npgsqlDate));
                    }
                }
            }
        }
コード例 #6
0
ファイル: DateTimeTests.cs プロジェクト: TonicAI/npgsql
        public async Task Date()
        {
            using var conn = await OpenConnectionAsync();

            var dateTime   = new DateTime(2002, 3, 4, 0, 0, 0, 0, DateTimeKind.Unspecified);
            var npgsqlDate = new NpgsqlDate(dateTime);

            using var cmd = new NpgsqlCommand("SELECT @p1, @p2", conn);
            var p1 = new NpgsqlParameter("p1", NpgsqlDbType.Date)
            {
                Value = npgsqlDate
            };
            var p2 = new NpgsqlParameter {
                ParameterName = "p2", Value = npgsqlDate
            };

            Assert.That(p2.NpgsqlDbType, Is.EqualTo(NpgsqlDbType.Date));
            Assert.That(p2.DbType, Is.EqualTo(DbType.Date));
            cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);
            using var reader = await cmd.ExecuteReaderAsync();

            reader.Read();

            for (var i = 0; i < cmd.Parameters.Count; i++)
            {
                // Regular type (DateTime)
                Assert.That(reader.GetFieldType(i), Is.EqualTo(typeof(DateTime)));
                Assert.That(reader.GetDateTime(i), Is.EqualTo(dateTime));
                Assert.That(reader.GetFieldValue <DateTime>(i), Is.EqualTo(dateTime));
                Assert.That(reader[i], Is.EqualTo(dateTime));
                Assert.That(reader.GetValue(i), Is.EqualTo(dateTime));

                // Provider-specific type (NpgsqlDate)
                Assert.That(reader.GetDate(i), Is.EqualTo(npgsqlDate));
                Assert.That(reader.GetProviderSpecificFieldType(i), Is.EqualTo(typeof(NpgsqlDate)));
                Assert.That(reader.GetProviderSpecificValue(i), Is.EqualTo(npgsqlDate));
                Assert.That(reader.GetFieldValue <NpgsqlDate>(i), Is.EqualTo(npgsqlDate));
            }
        }
コード例 #7
0
ファイル: DateTimeTests.cs プロジェクト: npgsql/npgsql
        public void Date()
        {
            using (var conn = OpenConnection())
            {
                var dateTime = new DateTime(2002, 3, 4, 0, 0, 0, 0, DateTimeKind.Unspecified);
                var npgsqlDate = new NpgsqlDate(dateTime);

                using (var cmd = new NpgsqlCommand("SELECT @p1, @p2, @p3", conn))
                {
                    var p1 = new NpgsqlParameter("p1", NpgsqlDbType.Date) {Value = npgsqlDate};
                    var p2 = new NpgsqlParameter("p2", DbType.Date) {Value = npgsqlDate.ToString()};
                    var p3 = new NpgsqlParameter {ParameterName = "p3", Value = npgsqlDate};
                    Assert.That(p3.NpgsqlDbType, Is.EqualTo(NpgsqlDbType.Date));
                    Assert.That(p3.DbType, Is.EqualTo(DbType.Date));
                    cmd.Parameters.Add(p1);
                    cmd.Parameters.Add(p2);
                    cmd.Parameters.Add(p3);
                    using (var reader = cmd.ExecuteReader())
                    {
                        reader.Read();

                        for (var i = 0; i < cmd.Parameters.Count; i++)
                        {
                            // Regular type (DateTime)
                            Assert.That(reader.GetFieldType(i), Is.EqualTo(typeof (DateTime)));
                            Assert.That(reader.GetDateTime(i), Is.EqualTo(dateTime));
                            Assert.That(reader.GetFieldValue<DateTime>(i), Is.EqualTo(dateTime));
                            Assert.That(reader[i], Is.EqualTo(dateTime));
                            Assert.That(reader.GetValue(i), Is.EqualTo(dateTime));

                            // Provider-specific type (NpgsqlDate)
                            Assert.That(reader.GetDate(i), Is.EqualTo(npgsqlDate));
                            Assert.That(reader.GetProviderSpecificFieldType(i), Is.EqualTo(typeof (NpgsqlDate)));
                            Assert.That(reader.GetProviderSpecificValue(i), Is.EqualTo(npgsqlDate));
                            Assert.That(reader.GetFieldValue<NpgsqlDate>(i), Is.EqualTo(npgsqlDate));
                        }
                    }
                }
            }
        }
コード例 #8
0
        public static ObservableCollection <Voucher> GetVouchers(string query)
        {
            using (var connection =
                       new NpgsqlConnection(Configuration.ConnectionString))
            {
                connection.Open();
                using (var command = new NpgsqlCommand(query, connection))
                {
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.HasRows)
                        {
                            return(new ObservableCollection <Voucher>());
                        }
                        ObservableCollection <Voucher> vouchers =
                            new ObservableCollection <Voucher>();
                        while (reader.Read())
                        {
                            int        voucherId = reader.GetInt32(0);
                            int        routeId   = reader.GetInt32(1);
                            string     hotel     = reader.GetString(2);
                            NpgsqlDate date      = reader.GetDate(3);
                            int        duration  = reader.GetInt32(4);
                            double     fullPrice = reader.GetDouble(5);
                            string     fio       = reader.GetString(6);
                            string     phone     = reader.GetString(7);


                            vouchers.Add(new Voucher(voucherId, routeId, hotel,
                                                     new DateTime(date.Year, date.Month, date.Day),
                                                     duration, fullPrice,
                                                     fio, phone));
                        }

                        return(vouchers);
                    }
                }
            }
        }
コード例 #9
0
        public static ObservableCollection <Customer> GetCustomers(string query = "")
        {
            using (var connection =
                       new NpgsqlConnection(Configuration.ConnectionString))
            {
                using (var command = new NpgsqlCommand(
                           query == "" ? Queries.MainTables.GetCustomers : query, connection))
                {
                    connection.Open();
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.HasRows)
                        {
                            return(null);
                        }
                        ObservableCollection <Customer> collection =
                            new ObservableCollection <Customer>();
                        while (reader.Read())
                        {
                            int        voucherCount = reader.GetInt32(0);
                            string     fio          = reader.GetString(1);
                            string     phone        = reader.GetString(2);
                            string     address      = reader.GetString(3);
                            NpgsqlDate birthday     = reader.GetDate(4);
                            string     status       = reader.GetString(5);


                            collection.Add(new Customer(voucherCount, fio,
                                                        phone, address,
                                                        new DateTime(birthday.Year, birthday.Month,
                                                                     birthday.Day), status));
                        }

                        return(collection);
                    }
                }
            }
        }
コード例 #10
0
        private static ObservableCollection <SimpleRecord> GetAgencies()
        {
            using (var connection =
                       new NpgsqlConnection(Configuration.ConnectionString))
            {
                using (var command = new NpgsqlCommand(
                           Queries.Dictionaries.SelectAll(DictionaryKind.Agency), connection))
                {
                    connection.Open();
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.HasRows)
                        {
                            return(null);
                        }
                        ObservableCollection <SimpleRecord> collection =
                            new ObservableCollection <SimpleRecord>();
                        while (reader.Read())
                        {
                            int        agencyId     = reader.GetInt32(0);
                            string     name         = reader.GetString(1).TrimEnd();
                            string     registration = reader.GetString(2).TrimEnd();
                            string     city         = reader.GetString(3).TrimEnd();
                            string     address      = reader.GetString(4).TrimEnd();
                            string     ownership    = reader.GetString(5).TrimEnd();
                            string     phone        = reader.GetString(6).TrimEnd();
                            NpgsqlDate date         = reader.GetDate(7);

                            collection.Add(new Agency(agencyId, registration,
                                                      name,
                                                      city, address, ownership, phone, new DateTime(date.Year, date.Month, date.Day)));
                        }

                        return(collection);
                    }
                }
            }
        }
コード例 #11
0
        public IEnumerable <Author> SearchAuthors(string signature, string name, NpgsqlDate minDate)
        {
            List <Author> authors = new List <Author>();

            con.Open();

            NpgsqlCommand command = new NpgsqlCommand($@"select author_id, name, surname, birthdate, signature from authors join persons on persons.person_id = authors.author_id
            where
			signature like '%{signature}%' and
			name like '%{name}%' and
			birthdate > @date"            , con);

            command.Parameters.Add(new NpgsqlParameter("@date", minDate));
            var reader = command.ExecuteReader();

            while (reader.Read())
            {
                authors.Add(ReadAuthor(reader));
            }

            con.Close();
            return(authors);
        }
コード例 #12
0
ファイル: TypesTests.cs プロジェクト: Rungee/Npgsql2
        public void SpecialDates()
        {
            NpgsqlDate date;
            DateTime dateTime;
            System.Globalization.Calendar calendar = new System.Globalization.GregorianCalendar();

            // a date after a leap year.
            dateTime = new DateTime(2008, 5, 31);
            date = new NpgsqlDate(dateTime);
            Assert.AreEqual(dateTime.Day, date.Day);
            Assert.AreEqual(dateTime.DayOfWeek, date.DayOfWeek);
            Assert.AreEqual(dateTime.DayOfYear, date.DayOfYear);
            Assert.AreEqual(calendar.IsLeapYear(2008), date.IsLeapYear);
            Assert.AreEqual(dateTime.Month, date.Month);
            Assert.AreEqual(dateTime.Year, date.Year);

            // A date that is a leap year day.
            dateTime = new DateTime(2000, 2, 29);
            date = new NpgsqlDate(2000, 2, 29);
            Assert.AreEqual(dateTime.Day, date.Day);
            Assert.AreEqual(dateTime.DayOfWeek, date.DayOfWeek);
            Assert.AreEqual(dateTime.DayOfYear, date.DayOfYear);
            Assert.AreEqual(calendar.IsLeapYear(2000), date.IsLeapYear);
            Assert.AreEqual(dateTime.Month, date.Month);
            Assert.AreEqual(dateTime.Year, date.Year);

            // A date that is not in a leap year.
            dateTime = new DateTime(1900, 3, 1);
            date = new NpgsqlDate(1900, 3, 1);
            Assert.AreEqual(dateTime.Day, date.Day);
            Assert.AreEqual(dateTime.DayOfWeek, date.DayOfWeek);
            Assert.AreEqual(dateTime.DayOfYear, date.DayOfYear);
            Assert.AreEqual(calendar.IsLeapYear(1900), date.IsLeapYear);
            Assert.AreEqual(dateTime.Month, date.Month);
            Assert.AreEqual(dateTime.Year, date.Year);

            // a date after a leap year.
            date = new NpgsqlDate(-1, 12, 31);
            Assert.AreEqual(31, date.Day);
            Assert.AreEqual(DayOfWeek.Sunday, date.DayOfWeek);
            Assert.AreEqual(366, date.DayOfYear);
            Assert.AreEqual(true, date.IsLeapYear);
            Assert.AreEqual(12, date.Month);
            Assert.AreEqual(-1, date.Year);
        }
コード例 #13
0
ファイル: TypesTests.cs プロジェクト: Rungee/Npgsql2
        public void NpgsqlDateMath()
        {
            NpgsqlDate date;

            // add a day to the empty constructor
            date = new NpgsqlDate() + new NpgsqlInterval(0, 1, 0);
            Assert.AreEqual(2, date.Day);
            Assert.AreEqual(DayOfWeek.Tuesday, date.DayOfWeek);
            Assert.AreEqual(2, date.DayOfYear);
            Assert.AreEqual(false, date.IsLeapYear);
            Assert.AreEqual(1, date.Month);
            Assert.AreEqual(1, date.Year);

            // add a day the same value as the empty constructor
            date = new NpgsqlDate(1, 1, 1) + new NpgsqlInterval(0, 1, 0);
            Assert.AreEqual(2, date.Day);
            Assert.AreEqual(DayOfWeek.Tuesday, date.DayOfWeek);
            Assert.AreEqual(2, date.DayOfYear);
            Assert.AreEqual(false, date.IsLeapYear);
            Assert.AreEqual(1, date.Month);
            Assert.AreEqual(1, date.Year);

            var diff = new NpgsqlDate(1, 1, 1) - new NpgsqlDate(-1, 12, 31);
            Assert.AreEqual(new NpgsqlInterval(0, 1, 0), diff);

            // Test of the addMonths method (positive values added)
            var dateForTestMonths = new NpgsqlDate(2008, 1, 1);
            Assert.AreEqual(dateForTestMonths.AddMonths(0), dateForTestMonths);
            Assert.AreEqual(dateForTestMonths.AddMonths(4), new NpgsqlDate(2008, 5, 1));
            Assert.AreEqual(dateForTestMonths.AddMonths(11), new NpgsqlDate(2008, 12, 1));
            Assert.AreEqual(dateForTestMonths.AddMonths(12), new NpgsqlDate(2009, 1, 1));
            Assert.AreEqual(dateForTestMonths.AddMonths(14), new NpgsqlDate(2009, 3, 1));
            dateForTestMonths = new NpgsqlDate(2008, 1, 31);
            Assert.AreEqual(dateForTestMonths.AddMonths(1), new NpgsqlDate(2008, 2, 29));
            Assert.AreEqual(dateForTestMonths.AddMonths(13), new NpgsqlDate(2009, 2, 28));

            // Test of the addMonths method (negative values added)
            dateForTestMonths = new NpgsqlDate(2009, 1, 1);
            Assert.AreEqual(dateForTestMonths.AddMonths(0), dateForTestMonths);
            Assert.AreEqual(dateForTestMonths.AddMonths(-4), new NpgsqlDate(2008, 9, 1));
            Assert.AreEqual(dateForTestMonths.AddMonths(-12), new NpgsqlDate(2008, 1, 1));
            Assert.AreEqual(dateForTestMonths.AddMonths(-13), new NpgsqlDate(2007, 12, 1));
            dateForTestMonths = new NpgsqlDate(2009, 3, 31);
            Assert.AreEqual(dateForTestMonths.AddMonths(-1), new NpgsqlDate(2009, 2, 28));
            Assert.AreEqual(dateForTestMonths.AddMonths(-13), new NpgsqlDate(2008, 2, 29));
        }
コード例 #14
0
 public IList <Author> SearchAuthors(string signature, string name, NpgsqlDate minDate)
 {
     return(GetAll().Where(x => x.Signature.Contains(signature) && x.Person.Name.Contains(name) && x.Person.BirthdayDate.HasValue && new NpgsqlDate(x.Person.BirthdayDate.Value) > minDate).ToList());
 }
コード例 #15
0
 internal static object ToDate(NpgsqlBackendTypeInfo typeInfo, String backendData, Int16 typeSize, Int32 typeModifier)
 {
     return(NpgsqlDate.Parse(backendData));
 }
コード例 #16
0
ファイル: Valve.cs プロジェクト: LasYl/TheUltimateProject
 public Valve(int positioTunnus, string nimitys, string valmistaja, string malli, int koko, int varastoNimike, NpgsqlDate seuraavaHuolto, NpgsqlDate huollettu, int huoltovali, out bool success) : this(positioTunnus, nimitys, valmistaja, malli, koko, varastoNimike, seuraavaHuolto, huollettu, huoltovali)
 {
     success = false;
 }
コード例 #17
0
ファイル: Valve.cs プロジェクト: LasYl/TheUltimateProject
 public Valve(int positioTunnus, string nimitys, string valmistaja, string malli, int koko, int varastoNimike, NpgsqlDate seuraavaHuolto, NpgsqlDate huollettu, int huoltovali)
 {
     _positioTunnus  = positioTunnus;
     _nimi           = nimitys;
     _valmistaja     = valmistaja;
     _malli          = malli;
     _koko           = koko;
     _varastoNimike  = varastoNimike;
     _seuraavaHuolto = seuraavaHuolto;
     _huollettu      = huollettu;
     _huoltovali     = huoltovali;
 }
コード例 #18
0
        public Dictionary <DateTime, int> GetSynchronizedPhysicalContacts(int userId, IEnumerable <DateTime> dateTimes)
        {
            Check.CallerLog <CommonCitizenRepository>(Logger, LoggerExecutionPositions.Entrance, $"userId: {userId}, dateTimes: {dateTimes}");
            Check.NotNull(userId, nameof(userId));
            Check.NotNull(dateTimes, nameof(dateTimes));

            var synchedDateTimes = new Dictionary <DateTime, int>();

            if (dateTimes.Count() < 1)
            {
                Check.CallerLog <CommonCitizenRepository>(Logger, LoggerExecutionPositions.Exit, $"dateTimes does not have any item.");
                return(synchedDateTimes);
            }

            using (var connection_ = new NpgsqlConnection(RepoOptions.PgsqlPassword))
            {
                try
                {
                    var query = $"SELECT id, date, time FROM (SELECT id, date, time FROM physical_contacts WHERE user_id = {userId}) WHERE ";

                    foreach (var dateTime in dateTimes)
                    {
                        var date = NpgsqlDate.ToNpgsqlDate(dateTime);
                        var time = NpgsqlTimeSpan.ToNpgsqlTimeSpan(dateTime.TimeOfDay);

                        query += $" (date = {date} AND time = {time}) OR";
                    }

                    query = query.TrimEnd('R').TrimEnd('O');

                    Check.CallerLog <CommonCitizenRepository>(Logger, LoggerExecutionPositions.Body, $"constructed query: {query}");

                    var command = new NpgsqlCommand(query);
                    command.Connection  = connection_;
                    command.CommandType = System.Data.CommandType.Text;
                    command.Prepare();

                    using (var reader = command.ExecuteReader())
                    {
                        Check.CallerLog <CommonCitizenRepository>(Logger, LoggerExecutionPositions.Body, $"reading data from reader");

                        while (reader.Read())
                        {
                            var id   = reader.GetInt32(0);
                            var date = reader.GetDate(1);
                            var time = reader.GetTimeSpan(2);

                            var dateTime = new DateTime(date.Year, date.Month, date.Day, time.Hours, time.Minutes, time.Seconds, time.Milliseconds);
                            synchedDateTimes.Add(dateTime, id);
                        }
                    }
                }
                catch (Exception exception)
                {
                    Check.CallerLog <CommonCitizenRepository>(Logger, LoggerExecutionPositions.Body, $"Exception {exception}", LogLevel.Warning);

                    if (exception is BackendException)
                    {
                        throw exception;
                    }

                    throw new BackendException(Convert.ToInt32(HttpStatusCode.InternalServerError), exception.Message);
                }
            }

            Check.CallerLog <CommonCitizenRepository>(Logger, LoggerExecutionPositions.Exit, $"synchedDateTimes: {synchedDateTimes}");
            return(synchedDateTimes);
        }
コード例 #19
0
        internal static object ToDate(NpgsqlBackendTypeInfo typeInfo, byte[] bBackendData, Int16 typeSize, Int32 typeModifier)
        {
            string backendData = BackendEncoding.UTF8Encoding.GetString(bBackendData);

            return(NpgsqlDate.Parse(backendData));
        }
コード例 #20
0
        static void Main(string[] args)
        {
            // Venttiililistan luonti
            List <Valve> valveList = new List <Valve>();

            // Nimikelistan luonti
            List <Nimike> nimikeLista = new List <Nimike>();

            // Ensimmäisen nimikenumeron asetus numeroksi 300001
            int seuraavaNimike = 300001;

            // Ohjelman jatkaminen kunnes muutetaan falseksi
            bool jatka = true;

            // Nimikelistan luonti
            List <Nimike> nimikkeet = new List <Nimike>();

            // Päivitetään venttiilista tietokannasta
            valveList = Sql.selectKaikkiVenttiilit();

            // Päivitetään nimikelista tietokannasta
            nimikkeet = Sql.selectKaikkiNimikkeet();

            // Rullataan 300001:stä nimikkeiden verran eteenpäin, että saadaan seuraava luotava nimike
            foreach (Nimike Nimike in nimikkeet)
            {
                seuraavaNimike++;
            }



            //konstruktori nimikelistan tulostukselle
            void tulostanimikkeet()
            {
                Console.WriteLine(String.Format("{0,-10} | {1,-15} | {2,-12} | {3,-11} | {4,7} | {5,7} | {6,11}", "Nimike", "Nimi", "Valmistaja", "Myyjä", "Hinta", "Saldo", "Minimisaldo"));
                Console.WriteLine();

                foreach (Nimike Nimike in nimikkeet)
                {
                    Console.WriteLine(String.Format("{0,-10} | {1,-15} | {2,-12} | {3,-11} | {4,7} | {5,7} | {6,11}", (Nimike.tarkistaNimikeNumero()), (Nimike.tarkistaNimi()), (Nimike.tarkistaValmistaja()), (Nimike.tarkistaMyyja()), (Nimike.tarkistaHinta()), (Nimike.tarkistaSaldo()), (Nimike.tarkistaMinimisaldo())));
                }
            }

            //konstruktori nimikelistan tulostukselle
            void tulostaventtiilit()
            {
                Console.WriteLine(String.Format("{0,-10} | {1,-15} | {2,-12} | {3,-13} | {4,7} | {5,12} | {6,15} | {7,20} | {8,10}", "Nimike", "Nimi", "Valmistaja", "Malli", "Koko", "Varastonimike", "Seuraava huolto", "Huollettu viimeksi", "Huoltoväli"));
                Console.WriteLine();

                foreach (Valve Valve in valveList)
                {
                    Console.WriteLine(String.Format("{0,-10} | {1,-15} | {2,-12} | {3,-13} | {4,7} | {5,12} | {6,15} | {7,20} | {8,10}", (Valve.tarkistaPositio()), (Valve.tarkistaNimi()), (Valve.tarkistaValmistaja()), (Valve.tarkistaMalli()), (Valve.tarkistaKoko()), (Valve.tarkistaNimike()), (Valve.tarkistaSeuraavahuolto()), (Valve.tarkistaEdellinenHuolto()), (Valve.tarkistaHuoltovali())));
                }
            }

            //Tulostetaan ohjeet ennen looppia
            TulostaOhjeet();
            //Käytttäjälle näkyvän loopin aloitus
            while (jatka)
            {
                //Loopin aloitus
                Console.WriteLine("\nAnna komento ohjeen mukaan, (Ohjeet uudelleen = 9)");
                string komento = Console.ReadLine();
                //Loopin ohjaus käyttäjän valitsemaan paikkaan
                switch (komento)
                {
                case "1":
                    // Uuden varastonimikkeen luonti
                    // Asetetaan nimikenumeroksi tietokannasta haettu seuraava vapaa nimike
                    int nimikeNumero = seuraavaNimike;
                    // Lisätään seuraavaa nimikettä varten yksi lisää
                    seuraavaNimike++;
                    // Annetaan nimikkeelle nimitys
                    Console.WriteLine("Anna uuden nimikkeelle nimi: ");
                    string nimi = Console.ReadLine();
                    // Annetaan nimikkeelle valmistaja
                    Console.WriteLine("Anna uuden huoltosarjan valmistaja: ");
                    string Nvalmistaja = Console.ReadLine();
                    // Annetaan nimikkeelle myyjä
                    Console.WriteLine("Anna uuden nimikkeen jälleenmyyjä: ");
                    string myyja = Console.ReadLine();
                    // Annetaan nimikkeelle hinta
                    Console.WriteLine("Anna uuden nimikkeen hinta: ");
                    try
                    {
                        hinta = int.Parse(Console.ReadLine());
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Anna hinta uudelleen, vain numerot hyväksytään");
                        hinta = int.Parse(Console.ReadLine());
                    }
                    // Annetaan nimikkeelle saldo, montako niitä on laittaa hyllyyn
                    Console.WriteLine("Anna nimikkeelle varastosaldo ");
                    try
                    {
                        saldo = int.Parse(Console.ReadLine());
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Anna saldo uudelleen, vain numerot hyväksytään");
                        saldo = int.Parse(Console.ReadLine());
                    }
                    // Annetaan nimikkeelle minimisaldo, määrä joka saldoa pitää vähintään olla ennen kuin niitä pitää tilata lisää
                    Console.WriteLine("Anna nimikkeelle minimisaldo, mikä pitää aina vähintään olla ");
                    int minimisaldo = int.Parse(Console.ReadLine());
                    // Luodaan nimike listaan ja tietokantaan
                    Nimike newNimike = new Nimike(nimikeNumero, nimi, Nvalmistaja, myyja, hinta, saldo, minimisaldo);
                    Sql.AddNimike(newNimike);
                    nimikeLista.Add(newNimike);
                    // Tulostetaan teksti, että kyseinen nimike on luotu
                    Console.WriteLine($"\nNimike { newNimike.tarkistaNimikeNumero() } luotu.");

                    break;

                case "2":
                    // Annetaan venttiilille positionumero, jonka käyttäjä itse päättää
                    Console.WriteLine("Anna uuden venttiilin positio numeroina: ");
                    try
                    {
                        positioTunnus = int.Parse(Console.ReadLine());
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Anna positio uudelleen, vain numerot hyväksytään");
                        positioTunnus = int.Parse(Console.ReadLine());
                    }
                    // Annetaan venttiilille nimitys
                    Console.WriteLine("Anna uuden venttiilin nimitys: ");
                    string nimitys = Console.ReadLine();
                    // Annetaan venttiilille valmistaja
                    Console.WriteLine("Anna uuden venttiilin valmistaja: ");
                    string valmistaja = Console.ReadLine();
                    // Annetaan venttiilille malli
                    Console.WriteLine("Anna uuden venttiilin malli: ");
                    string malli = Console.ReadLine();
                    // Annetaan venttiilille koko
                    Console.WriteLine("Anna uuden venttiilin koko: ");
                    try
                    {
                        koko = int.Parse(Console.ReadLine());
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Anna koko uudelleen, vain numerot hyväksytään");
                        koko = int.Parse(Console.ReadLine());
                    }

                    // Annetaan venttiilille huollossa käytettävä varaston nimikenumero

                    Console.WriteLine("Anna uuden venttiilin tiivisteiden varastonimike: (nimikelistaus 1 ");


                    int varastoNimike = int.Parse(Console.ReadLine());
                    if (varastoNimike == 1)
                    {
                        tulostanimikkeet();
                        Console.WriteLine("Anna uuden venttiilin tiivisteiden varastonimike: ");

                        varastoNimike = int.Parse(Console.ReadLine());
                    }


                    NpgsqlDate huollettu = NpgsqlDate.Today;

                    Console.WriteLine("Anna huoltoväli vuosina: ");
                    int        huoltovali     = int.Parse(Console.ReadLine());
                    NpgsqlDate seuraavaHuolto = huollettu.AddYears(huoltovali);
                    Valve      newValve       = new Valve(positioTunnus, nimitys, valmistaja, malli, koko, varastoNimike, seuraavaHuolto, huollettu, huoltovali);
                    Sql.AddValve(newValve);
                    valveList.Add(newValve);
                    Console.WriteLine($"Venttiili { newValve.tarkistaPositio() } luotu.");
                    break;



                case "3":
                    //Nimikkeiden tulostus taulukkona
                {
                    tulostanimikkeet();
                }
                break;

                case "4":
                    //Luodaan listaus venttiileistä, jossa muotoillaan tulostusasetukset taulukkomaiseen muotoon
                    //Ensin tulostetaan otsikot, jonka jälkeen foreachillä haetaan kaikilta venttiileiltä tiedot
                    Console.WriteLine(String.Format("{0,-10} | {1,-15} | {2,-12} | {3,-13} | {4,7} | {5,12} | {6,15} | {7,20} | {8,10}", "Nimike", "Nimi", "Valmistaja", "Malli", "Koko", "Varastonimike", "Seuraava huolto", "Huollettu viimeksi", "Huoltoväli"));
                    Console.WriteLine();

                    foreach (Valve Valve in valveList)
                    {
                        Console.WriteLine(String.Format("{0,-10} | {1,-15} | {2,-12} | {3,-13} | {4,7} | {5,12} | {6,15} | {7,20} | {8,10}", (Valve.tarkistaPositio()), (Valve.tarkistaNimi()), (Valve.tarkistaValmistaja()), (Valve.tarkistaMalli()), (Valve.tarkistaKoko()), (Valve.tarkistaNimike()), (Valve.tarkistaSeuraavahuolto()), (Valve.tarkistaEdellinenHuolto()), (Valve.tarkistaHuoltovali())));
                    }

                    break;

                case "5":
                {
                    Sql.selectKaikkiVenttiilit();
                    tulostaventtiilit();
                    Console.WriteLine("Anna poistettavan venttiilin positio ");
                    int id = int.Parse(Console.ReadLine());

                    Sql.poistaSql(id);
                    valveList = Sql.selectKaikkiVenttiilit();
                }
                break;

                case "6":
                {
                    Sql.selectKaikkiNimikkeet();
                    tulostanimikkeet();
                    Console.WriteLine("Anna poistettavan nimikkeen numero ");
                    int id = int.Parse(Console.ReadLine());

                    Sql.poistaNimike(id);
                    nimikkeet = Sql.selectKaikkiNimikkeet();
                }
                break;



                case "9":
                {
                    TulostaOhjeet();
                }
                break;

                // Ohjelman lopetus
                case "Q":
                {
                    jatka = false;
                }
                break;
                }
            }
        }
コード例 #21
0
 void INpgsqlSimpleTypeHandler <NpgsqlDate> .Write(NpgsqlDate value, NpgsqlWriteBuffer buf, NpgsqlParameter?parameter)
 => _bclHandler.Write(value, buf, parameter);
コード例 #22
0
 int INpgsqlSimpleTypeHandler <NpgsqlDate> .ValidateAndGetLength(NpgsqlDate value, NpgsqlParameter?parameter)
 => _bclHandler.ValidateAndGetLength(value, parameter);
コード例 #23
0
 public static DateTime GetDateTime(NpgsqlDate dt)
 {
     return((DateTime)dt);
 }