Files
myfriendsaround/main/MyFriendsAround.Data.BLL/FriendsRepository.cs
T
farcasclaudiu 833083ca0e Settings Page (in work)
Fixing Web hosting in Azure
2011-03-30 02:25:27 +03:00

76 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.Objects;
using System.Data.SqlTypes;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Types;
using MyFriendsAround.Common.Entities;
namespace MyFriendsAround.Data.BLL
{
public static class FriendsRepository
{
public static List<Friend> GetFriends()
{
return GetFriends(0, 50);
}
public static List<Friend> GetFriends(int skip, int take)
{
using (MyFriendsModelContainer ctx = new MyFriendsModelContainer())
{
ctx.ContextOptions.ProxyCreationEnabled = false;
List<Friend> list = ctx.Friends.OrderByDescending(f=> f.LastUpdated).Skip(skip).Take(take).ToList();
list.ForEach((f) =>
{
SqlGeometry geom = SqlGeometry.Parse(f.LocationStr);
f.Latitude = geom.STX.Value;
f.Longitude = geom.STY.Value;
});
return list;
}
}
public static bool PublishLocation(Friend friend)
{
using (MyFriendsModelContainer ctx = new MyFriendsModelContainer())
{
Friend locateFriend = ctx.Friends.SingleOrDefault(f => f.Id == friend.Id);
if (locateFriend == null)
{
ctx.Friends.AddObject(friend);
ctx.ObjectStateManager.ChangeObjectState(friend, System.Data.EntityState.Added);
}
else
{
//update
locateFriend.FriendName = friend.FriendName;
locateFriend.FriendImageUrl = friend.FriendImageUrl;
locateFriend.LastUpdated = friend.LastUpdated;
locateFriend.LocationStr = friend.LocationStr;
ctx.ObjectStateManager.ChangeObjectState(locateFriend, System.Data.EntityState.Modified);
}
bool success = ctx.SaveChanges() > 0;
if (success)
{
//update gegraphy field
ctx.ExecuteFunction("UpdateFriendLocationById", new ObjectParameter[]
{
new ObjectParameter("FriendID", friend.Id),
});
}
return success;
}
}
public static bool UpdatePicture(string userId, byte[] userPicture)
{
return false;
}
}
}