public GolferStatusMessagesContract[] UpdateGolferStatus(GolfersNearbySearchContract searchParamsWithStatus) { using (NeedAGolferDataContext dataContext = new NeedAGolferDataContext()) { GolferStatusMessage statusMessage = new GolferStatusMessage(); statusMessage.GolferId = searchParamsWithStatus.GolferId; statusMessage.Message = searchParamsWithStatus.Message; statusMessage.MessageCreateDate = DateTime.Now; dataContext.GolferStatusMessages.InsertOnSubmit(statusMessage); dataContext.SubmitChanges(); dataContext.Connection.Close(); } var golfersRetriever = RetrieverFactory.CreateInterface <IGolferRetriever>(); var foundGolfer = golfersRetriever.LoadByGolferId(CurrentSession.GolferId); if (!(bool)foundGolfer.IsAvailable) { NeedAGolferDataContext dataContext2 = new NeedAGolferDataContext(); foundGolfer.IsAvailable = true; foundGolfer.LastUpdated = DateTime.Now; foundGolfer.Latitude = searchParamsWithStatus.Latitude; foundGolfer.Longitude = searchParamsWithStatus.Longitude; dataContext2.Golfers.Attach(foundGolfer, true); dataContext2.SubmitChanges(); } var nearbyGolfers = golfersRetriever.GetNearbyGolfers(searchParamsWithStatus.Latitude, searchParamsWithStatus.Longitude, searchParamsWithStatus.Radius); var listGolfers = (from singleGolfer in nearbyGolfers where (singleGolfer.Handicap <= searchParamsWithStatus.Handicap && singleGolfer.Rating >= searchParamsWithStatus.Rating) || singleGolfer.GolferId == searchParamsWithStatus.GolferId //updating golfer always sees his latest status select new GolferStatusMessagesContract(singleGolfer)).ToList(); return(listGolfers.ToArray()); }
public GolferStatusMessagesContract[] GetNearbyGolfers(GolfersNearbySearchContract searchParams) { var golfersRetriever = RetrieverFactory.CreateInterface <IGolferRetriever>(); var nearbyGolfers = golfersRetriever.GetNearbyGolfers(searchParams.Latitude, searchParams.Longitude, searchParams.Radius); var listGolfers = (from singleGolfer in nearbyGolfers where (singleGolfer.GolferId == searchParams.GolferId || (singleGolfer.Handicap <= searchParams.Handicap && singleGolfer.Rating >= searchParams.Rating)) select new GolferStatusMessagesContract(singleGolfer)).ToList(); return(listGolfers.ToArray()); }