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); }
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); }