コード例 #1
0
        /// <summary>
        /// The function calculates the walking time duration in minutes from the user's location to the specific shelter.
        /// </summary>
        /// <param name="shelter"></param>
        /// <param name="lat"></param>
        /// <param name="lng"></param>
        /// <returns></returns>
        public static int GetDurationOfShelter(ShelterDTO shelter, double lat, double lng)
        {
            string shelterAddress = shelter.City + "%20" + shelter.ShelterStreet + "%20" + shelter.StreetNumber;
            string source         = lat + "," + lng;
            string url            = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins="
                                    + source + "&destinations=" + shelterAddress + "&mode=walking" + "&key=your key";
            WebRequest   request            = WebRequest.Create(url);
            WebResponse  response           = request.GetResponse();
            Stream       data               = response.GetResponseStream();
            StreamReader reader             = new StreamReader(data);
            string       responseFromServer = reader.ReadToEnd();

            JObject results = JObject.Parse(responseFromServer);
            int     seconds = Convert.ToInt32(results["rows"].First["elements"].First["duration"]["value"]);
            double  tmp     = (double)seconds / 60;
            int     minDuration;

            if (seconds / 60 != tmp)
            {
                minDuration = seconds / 60 + 1;
            }
            else
            {
                minDuration = seconds / 60;
            }

            reader.Close();
            data.Close();
            response.Close();
            return(minDuration);
        }
コード例 #2
0
        /// <summary>
        /// The function returns a list of the three nearest shelters according to the duration of each shelter that returns from the function GetDurationOfShelter(...)
        /// </summary>
        /// <param name="city"></param>
        /// <param name="lat"></param>
        /// <param name="lng"></param>
        /// <returns></returns>
        public static List <ShelterDTO> GetNearestShelter(double lat, double lng)
        {
            int minDuration2 = 0;
            int minDuration3 = 0;
            List <ShelterDTO> nearestShelters = new List <ShelterDTO>();
            ShelterDTO        nearestShelter  = new ShelterDTO();
            ShelterDTO        nearestShelter2 = new ShelterDTO();
            ShelterDTO        nearestShelter3 = new ShelterDTO();
            List <ShelterDTO> allSheltersDTO  = GetAllShelters();
            var lowDuration = 1000;

            foreach (var shelter in allSheltersDTO)
            {
                var minDuration = GetDurationOfShelter(shelter, lat, lng);
                if (minDuration < lowDuration)
                {
                    minDuration3    = minDuration2;
                    minDuration2    = lowDuration;
                    lowDuration     = minDuration;
                    nearestShelter3 = nearestShelter2;
                    nearestShelter2 = nearestShelter;
                    nearestShelter  = shelter;
                    nearestShelter.DurationValue = lowDuration;
                }
                else
                {
                    if (minDuration < minDuration2)
                    {
                        minDuration3    = minDuration2;
                        minDuration2    = minDuration;
                        nearestShelter3 = nearestShelter2;
                        nearestShelter2 = shelter;
                        nearestShelter2.DurationValue = minDuration2;
                    }
                    else
                    {
                        if (minDuration < minDuration3)
                        {
                            minDuration3    = minDuration;
                            nearestShelter3 = shelter;
                            nearestShelter3.DurationValue = minDuration3;
                        }
                    }
                }
            }
            nearestShelters.Add(nearestShelter);
            nearestShelters.Add(nearestShelter2);
            nearestShelters.Add(nearestShelter3);
            return(nearestShelters);
        }
コード例 #3
0
 public static ShelterDTO UpdateShelter(ShelterDTO updatedShelter, ref string message)
 {
     DAL.Shelter shelterToUpdate = db.Shelters.FirstOrDefault(s => s.ShelterKey == updatedShelter.ShelterKey);
     if (shelterToUpdate == null)
     {
         message = "לא נמצא מקלט מבוקש";
         return(null);
     }
     else
     {
         shelterToUpdate.City               = updatedShelter.City;
         shelterToUpdate.ShelterStreet      = updatedShelter.ShelterStreet;
         shelterToUpdate.StreetNumber       = updatedShelter.StreetNumber;
         shelterToUpdate.MaxPeople          = updatedShelter.MaxPeople;
         shelterToUpdate.ShelterDescription = updatedShelter.ShelterDescription;
         db.SaveChanges();
     }
     return(updatedShelter);
 }
コード例 #4
0
        public IHttpActionResult AddShelter(ShelterDTO newShelter)
        {
            string     message    = "";
            ShelterDTO addShelter = ShelterLogic.AddNewShelter(newShelter, ref message);

            if (addShelter != null)
            {
                return(Ok(addShelter));
            }
            if (message != "")
            {
                return(BadRequest(message));
            }
            var error = new
            {
                message = "ההוספה נכשלה"
            };

            return(Content(HttpStatusCode.BadRequest, error));
        }
コード例 #5
0
        public IHttpActionResult UpdateShelter(ShelterDTO updatedShelter)
        {
            string     message       = "";
            ShelterDTO updateShelter = ShelterLogic.UpdateShelter(updatedShelter, ref message);

            if (updateShelter != null)
            {
                return(Ok(updateShelter));
            }
            if (message != "")
            {
                return(BadRequest(message));
            }
            var error = new
            {
                message = "העדכון נכשל"
            };

            return(Content(HttpStatusCode.BadRequest, error));
        }
コード例 #6
0
        public static ShelterDTO AddNewShelter(ShelterDTO newShelter, ref string message)
        {
            //DAL.Shelter ifCityExists = db.Shelters.FirstOrDefault(s => s.City == newShelter.City);
            //DAL.Shelter ifStreetExists = db.Shelters.FirstOrDefault(s => s.ShelterStreet == newShelter.ShelterStreet);
            //DAL.Shelter ifStreetNumberExists = db.Shelters.FirstOrDefault(s => s.StreetNumber == newShelter.StreetNumber);
            bool ifExists = false;

            foreach (var shelter in db.Shelters)
            {
                if (shelter.City == newShelter.City)
                {
                    if (shelter.ShelterStreet == newShelter.ShelterStreet)
                    {
                        if (shelter.StreetNumber == newShelter.StreetNumber)
                        {
                            ifExists = true;
                            break;
                        }
                    }
                }
            }
            if (ifExists)
            {
                message = "מקלט זה קיים במערכת";
                return(null);
            }
            DAL.Shelter shelterDAL = ShelterDTO.DtoToDAL(newShelter);
            db.Shelters.Add(shelterDAL);
            try
            {
                db.SaveChanges();
                return(newShelter);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
コード例 #7
0
 public static ShelterDTO AddNewShelter(ShelterDTO newShelter, ref string message)
 {
     return(DTO.ShelterDTO.AddNewShelter(newShelter, ref message));
 }