//Вычисление времени на вынос public static async Task <string> CalcZoneTATime(DateTime TZ, string shift, string nn, string zname) { if (shift != "0:00") { int h = Int32.Parse(shift.Split(new char[] { ':' })[0]); int m = Int32.Parse(shift.Split(new char[] { ':' })[1]); int _nn = Int32.Parse(nn); string selectDDelays = "Select Delay from Delays where Flag=1 and Type='Вынос' and Zone='", connstr = ConfigurationManager.AppSettings.Get("connstr"); //string name = ((Button)sender).Name; //вычисляем оттяжку на вынос double TADelay = await DBselect.CalculateDelay(connstr, zname, selectDDelays + zname + "'"); //double TADelay = DBselect.CalculateDelay(connstr, zname, selectTADelays + zname + "'").Result; //вычисляем время для цветовой зоны и добавляем время оттяжки если оно есть //в функцию TimeCalc.CalculateNear подставляем значения переменных из App.Config для каждой цветовой зоны при string tEdit = Convert.ToDateTime(TimeCalc.CalculateTaway(TZ, h, m, _nn)).AddMinutes(Convert.ToDouble(TADelay)).ToShortTimeString(); //Сравниваем вычисленное время по цветовой зоне с временами на стопе, если совпадает, то прибавляем 10 мин, и сравниваем далее, времена в списке отсортированы по возрастанию return(tEdit); } else { return(""); } }
public static async Task <string> CalcBlueZoneTime(DateTime TZ, string shift, string nn, string zname, List <string> ListTimes) { if (shift != "0:00") { int h = Int32.Parse(shift.Split(new char[] { ':' })[0]); int m = Int32.Parse(shift.Split(new char[] { ':' })[1]); int _nn = Int32.Parse(nn); string selectDDelays = "Select Delay from Delays where Flag=1 and Type='Пеший' and Zone='", connstr = ConfigurationManager.AppSettings.Get("connstr"); //string name = ((Button)sender).Name; //вычисляем оттяжку на доставку double WDelay = DBselect.CalculateDelay(connstr, zname, selectDDelays + zname + "'").Result; //double TADelay = DBselect.CalculateDelay(connstr, zname, selectTADelays + zname + "'").Result; //вычисляем время для цветовой зоны и добавляем время оттяжки если оно есть //в функцию TimeCalc.CalculateNear подставляем значения переменных из App.Config для каждой цветовой зоны при //string tEdit = Convert.ToDateTime(TimeCalc.CalculateNear(TZ, h, m, _nn)).AddMinutes(Convert.ToDouble(DDelay)).ToShortTimeString(); string tEdit = Convert.ToDateTime(TimeCalc.CalculateNear(TZ, h, m, _nn)).AddMinutes(Convert.ToDouble(WDelay)).ToShortTimeString(); if (TZ > timeFromString && TZ < timeToString) { tEdit = Convert.ToDateTime(TimeCalc.CalculateNear(TZ.AddMinutes(Convert.ToInt32(Form1.ReadS("timeAddMinutes"))), h, m, _nn)).AddMinutes(Convert.ToDouble(WDelay)).ToShortTimeString(); } else { tEdit = Convert.ToDateTime(TimeCalc.CalculateNear(TZ, h, m, _nn)).AddMinutes(Convert.ToDouble(WDelay)).ToShortTimeString(); } //Сравниваем вычисленное время по цветовой зоне с временами на стопе, если совпадает, то прибавляем 10 мин, и сравниваем далее, времена в списке отсортированы по возрастанию foreach (string s in ListTimes) { if (tEdit == s) { tEdit = Convert.ToDateTime(tEdit).AddMinutes(10).ToShortTimeString(); } } return(tEdit); } else { return(""); } }