///<summary> /// Default GeoLocation constructor will set location to the Prime Meridian /// at Greenwich, England and a TimeZone of GMT. The longitude will be set to /// 0 and the latitude will be 51.4772 to match the location of the /// <a href = "http://www.rog.nmm.ac.uk">Royal Observatory, Greenwich </a>. No /// daylight savings time will be used. ///</summary> public GeoLocation() { LocationName = "Greenwich, England"; Longitude = 0; // added for clarity Latitude = 51.4772; TimeZone = new WindowsTimeZone(TimeZoneInfo.Utc); }
public void SimplePstConversionTest() { WindowsTimeZone pst = WindowsTimeZone.TimeZones.GetByZoneIndex(4); //PST Console.WriteLine(pst.ToLocalTime(DateTime.UtcNow)); Console.WriteLine(TimeZone.CurrentTimeZone.ToLocalTime(DateTime.UtcNow)); }
public WindowsTimeZone GetConfiguredTimeZone() { if (windowsTimeZone == null) { windowsTimeZone = WindowsTimeZone.TimeZones.GetByZoneIndex(displayTimeZoneIndex) as WindowsTimeZone; } return(windowsTimeZone); }
public void GetZoneByIndexReturnsProperPSTInfo() { WindowsTimeZone pst = WindowsTimeZone.TimeZones.GetByZoneIndex(4); //PST Assert.AreEqual("Pacific Daylight Time", pst.DaylightName); Assert.AreEqual("Pacific Daylight Time", pst.DaylightZoneName); Assert.AreEqual(new TimeSpan(1, 0, 0), pst.DaylightBias, "Expected a one hour bias"); }
public void GetDaylightChangesReturnsProperDaylightSavingsInfo() { WindowsTimeZone pst = WindowsTimeZone.TimeZones.GetByZoneIndex(4); //PST DaylightTime daylightChanges = pst.GetDaylightChanges(2006); DateTime start = DateTime.Parse("4/2/2006 2:00:00 AM"); DateTime end = DateTime.Parse("10/29/2006 2:00:00 AM"); Assert.AreEqual(start, daylightChanges.Start); Assert.AreEqual(end, daylightChanges.End); }
///<summary> /// Default GeoLocation constructor will set location to the Prime Meridian /// at Greenwich, England and a TimeZone of GMT. The longitude will be set to /// 0 and the latitude will be 51.4772 to match the location of the /// <a href = "http://www.rog.nmm.ac.uk">Royal Observatory, Greenwich </a>. No /// daylight savings time will be used. ///</summary> public GeoLocation() { LocationName = "Greenwich, England"; Longitude = 0; // added for clarity Latitude = 51.4772; #if SILVERLIGHT TimeZone = new WindowsTimeZone(TimeZoneInfo.Utc); #else TimeZone = new WindowsTimeZone("GMT"); #endif }
private ComplexZmanimCalendar GetZmanim() { string locationName = "Lakewood, NJ"; double latitude = 40.09596; //Lakewood, NJ double longitude = -74.22213; //Lakewood, NJ double elevation = 0; //optional elevation var timeZone = new WindowsTimeZone(); var location = new GeoLocation(locationName, latitude, longitude, elevation, timeZone); return(new ComplexZmanimCalendar(location)); }
public void ToUniversalTimeReturnsProperTime() { IFormatProvider culture = new CultureInfo("en-US", true); DateTime localDate = DateTime.Parse("10/01/2006 12:30", culture, DateTimeStyles.AllowWhiteSpaces); WindowsTimeZone pst = WindowsTimeZone.TimeZones.GetByZoneIndex(4); //PST DateTime utcDate = pst.ToUniversalTime(localDate); string formattedPstDate = utcDate.ToString("MM/dd/yyyy HH:mm", culture); Assert.AreEqual("10/01/2006 19:30", formattedPstDate); }
public void ToLocalTimeReturnsProperTimeDuringDaylightSavings() { IFormatProvider culture = new CultureInfo("en-US", true); DateTime utcDate = DateTime.Parse("10/01/2006 19:30", culture, DateTimeStyles.AllowWhiteSpaces); utcDate = utcDate.ToLocalTime().ToUniversalTime(); Assert.AreEqual("10/01/2006 19:30", utcDate.ToString("MM/dd/yyyy HH:mm", culture), "An assumption about round tripping the UTC date was wrong."); WindowsTimeZone pst = WindowsTimeZone.TimeZones.GetByZoneIndex(4); //PST DateTime pstDate = pst.ToLocalTime(utcDate); string formattedPstDate = pstDate.ToString("MM/dd/yyyy HH:mm", culture); Assert.AreEqual("10/01/2006 12:30", formattedPstDate); }
public String Index(String date, String timezone, double latitude, double longitude, double elevation, String timeformat, String format, String mode) { //if any of the parameters are empty then return a error saying parameters are missing if (date == "") { Console.WriteLine("date is missing, using todays date"); } if (latitude == 0.0) { return("Error: latitude is a required parameter"); } if (longitude == 0.0) { return("Error: longitude is a required parameter"); } //check if the timezone is valid try { ITimeZone timeZone = new WindowsTimeZone(timezone); } catch (Exception ex) { Console.WriteLine("Time zone is invalid returning error " + ex.Message); return("The time zone you have submitted is not valid. Time zones should be formatted like America/New_York"); } //create a general try catch to prevent major errors try { //create a model to pass to the zmanimService ZmanimModel model = new ZmanimModel(); //store the controller params in the model model.latitude = latitude; model.longitude = longitude; model.elevation = elevation; model.mode = mode; model.timeformat = timeformat; model.timezone = timezone; //check if the date is parsable, if its not then set the model date to null DateTime theDate; if (DateTime.TryParse(date, out theDate)) { model.date = theDate; } else { model.date = null; } //now pass the model to the zmanim service ZmanimService service = new ZmanimService(model); //make sure format is instantiated, if its not then instantiate it if (format == null) { format = "json"; } //pass the model to the view and return the view //choose the view based on the format parameter if (format.ToLower() == "xml") { XmlView view = new XmlView(model); return(view.getView()); } else { //use json as the default format JsonView view = new JsonView(model); return(view.getView()); } } catch (Exception ex) { Console.WriteLine("Error:" + ex.Message); //return a error message return("There was a error generating the zmanim, please ensure all of your input parameters are correct and try again later"); } }
public ZmanimService(ZmanimModel model) { String locationName = "Random"; double latitude = model.latitude; double longitude = model.longitude; double elevation = model.elevation; ITimeZone timeZone = new WindowsTimeZone(model.timezone); GeoLocation location = new GeoLocation(locationName, latitude, longitude, elevation, timeZone); ComplexZmanimCalendar czc; //if the models date is null then set the models date to today if (!model.date.HasValue) { model.date = DateTime.Now; } Console.WriteLine("Date was submitted so using the date of" + model.date.ToString()); czc = new ComplexZmanimCalendar(model.date.GetValueOrDefault(), location); //If the request wanted basic mode then use basic zmanim, else print everything if (model.mode == "basic") { //insert the zmanim into the model so the controller can create a view from it model.zmanimList.Add("Alos 16point 1Degrees", czc.GetAlos16Point1Degrees()); model.zmanimList.Add("Sunrise", czc.GetSunrise()); model.zmanimList.Add("Sof Zman Shema MGA", czc.GetSofZmanShmaMGA()); model.zmanimList.Add("Sof Zman Shema Gra", czc.GetSofZmanShmaGRA()); model.zmanimList.Add("Sof Zman Tefilah Gra", czc.GetSofZmanTfilaGRA()); model.zmanimList.Add("Sof Zman Tefilah MGA", czc.GetSofZmanTfilaMGA72Minutes()); model.zmanimList.Add("Chatzos", czc.GetChatzos()); model.zmanimList.Add("Mincha Gedolah", czc.GetMinchaGedola()); model.zmanimList.Add("PlagHamincha", czc.GetPlagHamincha()); model.zmanimList.Add("Shkia", czc.GetSunset()); model.zmanimList.Add("Tzais", czc.GetTzais()); model.zmanimList.Add("Candle Lighting", czc.GetCandleLighting()); } else { //insert the zmanim into the model so the controller can create a view from it model.zmanimList.Add("Alos", czc.GetAlos16Point1Degrees()); model.zmanimList.Add("Alos16point1Degrees", czc.GetAlos16Point1Degrees()); model.zmanimList.Add("Alos18Degrees", czc.GetAlos18Degrees()); model.zmanimList.Add("Alos19Point8Degrees", czc.GetAlos19Point8Degrees()); model.zmanimList.Add("Alos26Degrees", czc.GetAlos26Degrees()); model.zmanimList.Add("Alos60", czc.GetAlos60()); model.zmanimList.Add("Alos72", czc.GetAlos72Zmanis()); model.zmanimList.Add("Alos90", czc.GetAlos90()); model.zmanimList.Add("Alos90Zmanim", czc.GetAlos90Zmanis()); model.zmanimList.Add("Alos96", czc.GetAlos96()); model.zmanimList.Add("Alos96Zmanim", czc.GetAlos96Zmanis()); model.zmanimList.Add("Alos120", czc.GetAlos120()); model.zmanimList.Add("Alos120Zmanim", czc.GetAlos120Zmanis()); model.zmanimList.Add("Misheyakir10.2Degrees", czc.GetMisheyakir10Point2Degrees()); model.zmanimList.Add("Misheyakir11Degrees", czc.GetMisheyakir11Degrees()); model.zmanimList.Add("Misheyakir11.5Degrees", czc.GetMisheyakir11Point5Degrees()); model.zmanimList.Add("Sunrise", czc.GetSunrise()); model.zmanimList.Add("SofZmanShemaMGA", czc.GetSofZmanShmaMGA()); model.zmanimList.Add("SofZmanShmaGra", czc.GetSofZmanShmaGRA()); model.zmanimList.Add("SofZmanShema3HoursBeforeChatzos", czc.GetSofZmanShma3HoursBeforeChatzos()); model.zmanimList.Add("SofZmanShemaAlos16Point1ToSunset", czc.GetSofZmanShmaAlos16Point1ToSunset()); model.zmanimList.Add("SofZmanShemaAlos16Point1ToTzaisGeonim7Point083Degrees", czc.GetSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees()); model.zmanimList.Add("SofZmanShemaAteretTorah", czc.GetSofZmanShmaAteretTorah()); model.zmanimList.Add("SofZmanShemaMGA18Degrees", czc.GetSofZmanShmaMGA18Degrees()); model.zmanimList.Add("SofZmanShemaMGA16Point1Degrees", czc.GetSofZmanShmaMGA16Point1Degrees()); model.zmanimList.Add("SofZmanShemaMGA19point8Degrees", czc.GetSofZmanShmaMGA19Point8Degrees()); model.zmanimList.Add("SofZmanShemaMGA72", czc.GetSofZmanShmaMGA72Minutes()); model.zmanimList.Add("SofZmanShemaMGA72Zmanis", czc.GetSofZmanShmaMGA72MinutesZmanis()); model.zmanimList.Add("SofZmanShemaMGA90", czc.GetSofZmanShmaMGA90Minutes()); model.zmanimList.Add("SofZmanShemaMGA90Zmanis", czc.GetSofZmanShmaMGA90MinutesZmanis()); model.zmanimList.Add("SofZmanShemaMGA96", czc.GetSofZmanShmaMGA96Minutes()); model.zmanimList.Add("SofZmanShemaMGA96Zmanis", czc.GetSofZmanShmaMGA96MinutesZmanis()); model.zmanimList.Add("SofZmanShemaMGA120", czc.GetSofZmanShmaMGA120Minutes()); model.zmanimList.Add("SofZmanTefilahGra", czc.GetSofZmanTfilaGRA()); model.zmanimList.Add("SofZmanTefilahGra2HoursBeforeChatzos", czc.GetSofZmanTfila2HoursBeforeChatzos()); model.zmanimList.Add("SofZmanTefilahAteretTorah", czc.GetSofZmanTfilahAteretTorah()); model.zmanimList.Add("SofZmanTefilahMGA72", czc.GetSofZmanTfilaMGA72Minutes()); model.zmanimList.Add("SofZmanTefilahMGA72Zmanis", czc.GetSofZmanTfilaMGA72MinutesZmanis()); model.zmanimList.Add("SofZmanTefilahMGA90", czc.GetSofZmanTfilaMGA90Minutes()); model.zmanimList.Add("SofZmanTefilahMGA90Zmanis", czc.GetSofZmanTfilaMGA90MinutesZmanis()); model.zmanimList.Add("SofZmanTefilahMGA96", czc.GetSofZmanTfilaMGA96Minutes()); model.zmanimList.Add("SofZmanTefilahMGA96Zmanis", czc.GetSofZmanTfilaMGA96MinutesZmanis()); model.zmanimList.Add("SofZmanTefilahMGA120", czc.GetSofZmanTfilaMGA120Minutes()); model.zmanimList.Add("SolarMidnight", czc.GetSolarMidnight()); model.zmanimList.Add("Chatzos", czc.GetChatzos()); model.zmanimList.Add("MinchaGedolah", czc.GetMinchaGedola()); model.zmanimList.Add("MinchaGedolah16.1Degrees", czc.GetMinchaGedola16Point1Degrees()); model.zmanimList.Add("MinchaGedolah30MinutesAfterChatzos", czc.GetMinchaGedola30Minutes()); model.zmanimList.Add("MinchaGedolah72MinutesAfterChatzos", czc.GetMinchaGedola72Minutes()); model.zmanimList.Add("MinchaGedolahAteretTorah", czc.GetMinchaGedolaAteretTorah()); model.zmanimList.Add("MinchaKetana", czc.GetMinchaKetana()); model.zmanimList.Add("MinchaKetanaMGA72Minutes", czc.GetMinchaKetana72Minutes()); model.zmanimList.Add("MinchaKetanaMGA16.1Degrees", czc.GetMinchaKetana16Point1Degrees()); model.zmanimList.Add("MinchaKetanaAteretTorah", czc.GetMinchaKetanaAteretTorah()); model.zmanimList.Add("PlagHamincha", czc.GetPlagHamincha()); model.zmanimList.Add("PlagHaminchaAteretTorah", czc.GetPlagHaminchaAteretTorah()); model.zmanimList.Add("PlagHaminchaDayStartAlosEndSunset", czc.GetPlagAlosToSunset()); model.zmanimList.Add("PlagHaminchaAlos16Point1ToTzaisGeonim7Point083Degrees", czc.GetPlagAlos16Point1ToTzaisGeonim7Point083Degrees()); model.zmanimList.Add("PlagHamincha18Degrees", czc.GetPlagHamincha18Degrees()); model.zmanimList.Add("PlagHamincha19.8Degrees", czc.GetPlagHamincha19Point8Degrees()); model.zmanimList.Add("PlagHamincha26Degrees", czc.GetPlagHamincha26Degrees()); model.zmanimList.Add("PlagHamincha60", czc.GetPlagHamincha60Minutes()); model.zmanimList.Add("PlagHamincha72", czc.GetPlagHamincha72Minutes()); model.zmanimList.Add("PlagHamincha72Zmanis", czc.GetPlagHamincha72MinutesZmanis()); model.zmanimList.Add("PlagHamincha90", czc.GetPlagHamincha90Minutes()); model.zmanimList.Add("PlagHamincha90Zmanis", czc.GetPlagHamincha90MinutesZmanis()); model.zmanimList.Add("PlagHamincha96", czc.GetPlagHamincha96Minutes()); model.zmanimList.Add("PlagHamincha96Zmanis", czc.GetPlagHamincha96MinutesZmanis()); model.zmanimList.Add("Shkia", czc.GetSunset()); model.zmanimList.Add("BainHashmashosRabeinuTam2Stars", czc.GetBainHasmashosRT2Stars()); model.zmanimList.Add("BainHashmashosRabeinuTam58.5Minutes", czc.GetBainHasmashosRT58Point5Minutes()); model.zmanimList.Add("BainHashmashosRabeinuTam13.24Degrees", czc.GetBainHasmashosRT13Point24Degrees()); model.zmanimList.Add("BainHashmashosRabeinuTam13Point5MinutesBefore7Point083Degrees", czc.GetBainHasmashosRT13Point5MinutesBefore7Point083Degrees()); model.zmanimList.Add("Tzais", czc.GetTzais()); model.zmanimList.Add("Tzais16.1Degrees", czc.GetTzais16Point1Degrees()); model.zmanimList.Add("Tzais18Degrees", czc.GetTzais18Degrees()); model.zmanimList.Add("Tzais26Degrees", czc.GetTzais26Degrees()); model.zmanimList.Add("Tzais19.8Degrees", czc.GetTzais19Point8Degrees()); model.zmanimList.Add("Tzais60", czc.GetTzais60()); model.zmanimList.Add("Tzais90", czc.GetTzais90()); model.zmanimList.Add("Tzais96", czc.GetTzais96()); model.zmanimList.Add("Tzais120", czc.GetTzais120()); model.zmanimList.Add("Tzais72Zmanis", czc.GetTzais72Zmanis()); model.zmanimList.Add("Tzais90Zmanis", czc.GetTzais90Zmanis()); model.zmanimList.Add("Tzais96Zmanis", czc.GetTzais96Zmanis()); model.zmanimList.Add("Tzais120Zmanis", czc.GetTzais120Zmanis()); model.zmanimList.Add("TzaisAteretTorah", czc.GetTzaisAteretTorah()); model.zmanimList.Add("CandleLighting", czc.GetCandleLighting()); } }
public async Task <JsonResult> Post([FromBody] GoogleJsonRequest value) { //Create request try { HttpContext.Request.Body.Position = 0; StreamReader read = new StreamReader(HttpContext.Request.Body, true); //log the inconming request body just to be able to view them on heroku Console.WriteLine(await read.ReadToEndAsync()); WebRequest request = WebRequest.Create("http://freegeoip.net/json/" + Request.Headers["x-forwarded-for"].ToString()); request.Method = "GET"; //Get the response WebResponse wr = await request.GetResponseAsync(); Stream receiveStream = wr.GetResponseStream(); StreamReader reader = new StreamReader(receiveStream); string content = reader.ReadToEnd(); JObject obj = JObject.Parse(content); String city = (String)obj["city"]; double lat = (Double)obj["latitude"]; double lon = (Double)obj["longitude"]; String timeZone = (String)obj["time_zone"]; //generate the zmanim ITimeZone zmanimTimeZone = new WindowsTimeZone(timeZone); GeoLocation location = new GeoLocation("Random", lat, lon, 0, zmanimTimeZone); ComplexZmanimCalendar czc = new ComplexZmanimCalendar(location); //if zmanim_names is null then return the full zmanim, otherwise return that specific zman if (value is null || value.Result is null || value.Result.Parameters is null || value.Result.Parameters.ZmanimNames is null) { String Speech = "Here are your jewish times for " + city + ". Dawn is at " + czc.GetAlosHashachar().formatDate() + ". Sunrise is at " + czc.GetSunrise().formatDate() + ". The Latest Shema is at " + czc.GetSofZmanShmaMGA().formatDate() + " According to the magein avraham, and at " + czc.GetSofZmanShmaGRA().formatDate() + " according to the grah." + " The latest time for morning prayers is at " + czc.GetSofZmanTfilaGRA().formatDate() + " According to the grah and at " + czc.GetSofZmanShmaMGA().formatDate() + " according to the magein avraham. " + "Midday is at " + czc.GetChatzos().formatDate() + ". The earliest time for afternoon services is at " + czc.GetMinchaGedola().formatDate() + ". Sunset is at" + czc.GetSunset().formatDate() + ". Nightfall is at " + czc.GetTzais().formatDate(); String display = "Jewish times for " + city + "\nDawn-" + czc.GetAlosHashachar().formatDate() + "\nSunrise-" + czc.GetSunrise().formatDate() + "\n Latest Shema MGA-" + czc.GetSofZmanShmaMGA().formatDate() + "\n Latest Shema Gra-" + czc.GetSofZmanShmaGRA().formatDate() + "\nLatest morning prayers Gra-" + czc.GetSofZmanTfilaGRA().formatDate() + "\nLatest morning prayers Mga-" + czc.GetSofZmanShmaMGA().formatDate() + "\nMidday-" + czc.GetChatzos().formatDate() + "\nEarliest afternoon prayers-" + czc.GetMinchaGedola().formatDate() + "\nSunset-" + czc.GetSunset().formatDate() + "\nNightfall-" + czc.GetTzais().formatDate(); ResponseJson response = new ResponseJson(); response.DisplayText = display; response.Source = "Zmanim.net"; response.Speech = Speech; Console.WriteLine("Processed post method"); return(Json(response)); } else { String speech = ""; String display = ""; switch (value.Result.Parameters.ZmanimNames) { case "shkia": speech = "Sunset is at " + czc.GetSunset().formatDate(); display = speech; break; case "sofeshema": speech = "Latest shema is at " + czc.GetSofZmanShmaGRA().formatDate() + " according to the grah, and at " + czc.GetSofZmanShmaMGA().formatDate() + " according to the magein avraham"; display = "Latest Shema Gra: " + czc.GetSofZmanShmaGRA().formatDate() + ". Latest Shema Magein Avraham: " + czc.GetSofZmanShmaMGA().formatDate(); break; case "sofeteffilah": speech = "The latest time for morning prayers is at " + czc.GetSofZmanTfilaGRA().formatDate() + " according to the grah, and at " + czc.GetSofZmanTfilaMGA().formatDate() + " according to the magein avraham"; display = "Latest morning prayers Gra: " + czc.GetSofZmanTfilaGRA().formatDate() + ". Latest morning prayers Magein Avraham: " + czc.GetSofZmanTfilaMGA().formatDate(); break; case "chatzos": speech = "Midday is at " + czc.GetChatzos().formatDate(); display = speech; break; case "minchagedolah": speech = "The earliest time for afternoon prayer is at " + czc.GetMinchaGedola().formatDate(); display = speech; break; case "minchaketana": speech = "Mincha Ketana is at " + czc.GetMinchaKetana().formatDate(); display = speech; break; case "neitz": speech = "Sunrise is at " + czc.GetSunrise().formatDate(); display = speech; break; case "alos": speech = "Dawn is at " + czc.GetAlosHashachar().formatDate(); display = speech; break; case "tzaishakochavim": speech = "Nightfall is at " + czc.GetTzais().formatDate(); display = speech; break; default: speech = "The zman you requested could not be calculated"; display = speech; break; } ResponseJson response = new ResponseJson(); response.DisplayText = display + " in " + city; response.Source = "Zmanim.net"; response.Speech = speech + " in " + city; Console.WriteLine("Processed post method"); return(Json(response)); } }