예제 #1
0
        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());
        }
예제 #2
0
        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());
        }