コード例 #1
0
        public static List <TimeSlice> GetUnloadSlices(string rampid, string rampdsc, DateTime datefrom, DateTime dateto, List <TimeSlice> tslices, SqlCommand cmd, SqlDataReader dr)
        {
            rampid  = rampid.Trim();
            rampdsc = rampdsc.Trim();
            // Zistenie dynamicky rezervovaných časov rampy ktoré spadajú do čaového úseku od-do
            List <TimeSlice> tmptslices = new List <TimeSlice>();

            cmd.CommandText = "SELECT FORMAT(datefrom, 'yyyy-MM-dd HH:mm:ss'), FORMAT(dateto, 'yyyy-MM-dd HH:mm:ss') FROM trucks_unloads WHERE rampid='" + rampid + "' ";
            cmd.CommandText = cmd.CommandText + "AND NOT ( DATEADD( ss, 1, datefrom )>@Dateto OR DATEADD( ss, -1, dateto )<@Datefrom )";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@Rampid", SqlDbType.NVarChar).Value   = rampid;
            cmd.Parameters.Add("@Datefrom", SqlDbType.DateTime).Value = datefrom;
            cmd.Parameters.Add("@Dateto", SqlDbType.DateTime).Value   = dateto;
            dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                tmptslices.Clear();
                while (dr.Read())
                {
                    DateTime startdt     = DateTime.ParseExact(dr.GetValue(0).ToString().Trim(), "yyyy-MM-dd HH:mm:ss", null);
                    DateTime enddt       = DateTime.ParseExact(dr.GetValue(1).ToString().Trim(), "yyyy-MM-dd HH:mm:ss", null).AddSeconds(1);
                    int      diffminutes = (int)Math.Floor((double)(int)(enddt - startdt).TotalMinutes / Constants.TimeSliceLenghtInMinutes);
                    tmptslices = WorkCalendar.CreateTimeSlices(rampid, rampdsc, startdt, 1, diffminutes, tmptslices, false);
                }
                // Nájdenie každého dieliku dynamicky rezervovaného času v dielikoch pracovných smien danej rampy a ak sa nájde, tak označenie nájdeného dieliku pracovnej smeny príznakom 'obsadený'
                tslices = WorkCalendar.CompareTimeSlices(tmptslices, tslices);
            }
            dr.Close();
            cmd.Dispose();
            return(tslices);
        }
コード例 #2
0
        public static List <TimeSlice> GetBlockResSlices(string sqltable, string rampid, string rampdsc, DateTime date, List <TimeSlice> tslices, SqlCommand cmd, SqlDataReader dr, bool isjumpable)
        {
            sqltable = sqltable.Trim();
            rampid   = rampid.Trim();
            rampdsc  = rampdsc.Trim();
            // Zistenie blokovaných/rezervovaných časov rampy pre obdobie, do ktorého spadá zadaný dátum
            List <TimeSlice> tmptslices = new List <TimeSlice>();

            cmd.CommandText = "SELECT mon,tue,wed,thu,fri,sat,sun,timefrom,timeto" + (isjumpable ? ",jumpable" : "") + " FROM " + sqltable + " WHERE rampid=@Rampid AND validfrom<=@Date AND validto>=@Date ";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@Rampid", SqlDbType.NVarChar).Value = rampid;
            cmd.Parameters.Add("@Date", SqlDbType.Date).Value       = date;
            dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                DateTime startdt, enddt;
                while (dr.Read())
                {
                    // Zistenie, či blokovaný čas platí aj pre deň v týždni na ktorý pripadá dátum zadaný užívateľom
                    if ((date.DayOfWeek == DayOfWeek.Monday && dr.GetValue(0).ToString().Trim() == "1") || (date.DayOfWeek == DayOfWeek.Tuesday && dr.GetValue(1).ToString().Trim() == "1") ||
                        (date.DayOfWeek == DayOfWeek.Wednesday && dr.GetValue(2).ToString().Trim() == "1") || (date.DayOfWeek == DayOfWeek.Thursday && dr.GetValue(3).ToString().Trim() == "1") ||
                        (date.DayOfWeek == DayOfWeek.Friday && dr.GetValue(4).ToString().Trim() == "1") || (date.DayOfWeek == DayOfWeek.Saturday && dr.GetValue(5).ToString().Trim() == "1") ||
                        (date.DayOfWeek == DayOfWeek.Sunday && dr.GetValue(6).ToString().Trim() == "1"))
                    {
                        // Vytvorenie časových dielikov (po 10 minútach) pre blokovaný čas
                        startdt = DateTime.ParseExact(date.ToString("yyyy-MM-dd") + " " + dr.GetValue(7).ToString().Trim() + ":00", "yyyy-MM-dd HH:mm:ss", null);
                        enddt   = DateTime.ParseExact(date.ToString("yyyy-MM-dd") + " " + dr.GetValue(8).ToString().Trim() + ":00", "yyyy-MM-dd HH:mm:ss", null);
                        int diffminutes = (int)Math.Floor((double)(int)(enddt - startdt).TotalMinutes / Constants.TimeSliceLenghtInMinutes);
                        tmptslices.Clear();
                        tmptslices = WorkCalendar.CreateTimeSlices(rampid, rampdsc, startdt, 1, diffminutes, tmptslices, (isjumpable ? dr.GetValue(9).ToString().Trim() == "1" : false));
                        // Nájdenie každého dieliku blokovaného času v dielikoch pracovných smien danej rampy a ak sa nájde, tak označenie nájdeného dieliku pracovnej smeny príznakom 'obsadený' prípadne o bokovaných časov rampy aj príznakom 'obskočiteľný'
                        tslices = WorkCalendar.CompareTimeSlices(tmptslices, tslices);
                    }
                }
            }
            dr.Close();
            cmd.Dispose();
            return(tslices);
        }