public JsonResult SendSos(SOSViewModel model) { List <RelationType> relationTypes = citizenBusinessLayer.GetRelationTypes().ToList(); long friend = relationTypes.Single(r => r.Name == "Friend").ID; long parent = relationTypes.Single(r => r.Name == "Parent").ID; long sibling = relationTypes.Single(r => r.Name == "Sibling").ID; int numberOfPlaces = 5; SOSs sos = new SOSs(); var user = User.Identity.GetCitizen(); var pointString = string.Format("POINT({0} {1})", model.Longitude.ToString(), model.Latitude.ToString()); var location = System.Data.Entity.Spatial.DbGeography.FromText(pointString); DateTime time = DateTime.Now; sos.Description = model.Description; sos.SenderID = user.Id; sos.StatusID = 1; // Pending sos.Time = time; sos.IsAccepted = false; sos.Location = location; List <long> citizens = new List <long>(); List <long> contributers = new List <long>(); if (model.IsMedicalPlace) { contributers = (sosBusinessLayer.GetContributersOfSOSsServices(pointString, numberOfPlaces)).Where(s => s.Id != user.Id).Select(s => s.Id).ToList(); } if (model.IsFriend) { citizens = (citizenBusinessLayer.GetCitizenRelatives(user.Id, friend)).Select(c => c.Id).ToList(); } if (model.IsFamily) { citizens = citizens.Union(citizenBusinessLayer.GetCitizenRelatives(user.Id, parent).Select(c => c.Id)).ToList(); citizens = citizens.Union(citizenBusinessLayer.GetCitizenRelatives(user.Id, sibling).Select(c => c.Id)).ToList(); } try { int citizensType = 2; int contributersType = 1; sosBusinessLayer.AddSOS(sos); NotificationsHub.NotifySOS(sos.ID, citizens, citizensType, model.Description, model.Latitude , model.Longitude, user.PhoneNumber); NotificationsHub.NotifySOS(sos.ID, contributers, contributersType, model.Description, model.Latitude , model.Longitude, user.PhoneNumber); return(Json("Your Request is Successfully Sent")); } catch (Exception e) { return(Json(e.Message)); } }