예제 #1
0
        public GomeeResponse AddGomee(
            Int32 memberId,
            String caption,
            String address,
            String description,
            Double latitude,
            Double longitude, Int32 type)
        {
            _serviceContext.ContentType = "text/html";

            if (caption == null)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "caption",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.ArgumentNull_String,
                            "caption"),
                        Value = caption
                    });

            if (address == null)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "address",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.ArgumentNull_String,
                            "address"),
                        Value = address
                    });

            if (description == null)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "description",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.ArgumentNull_String,
                            "description"),
                        Value = description
                    });

            GomeeResponse response = new GomeeResponse();
            IUnitOfWork uow = null;
            IGomeeFactory factory = null;

            try
            {
                uow = new UnitOfWork();
                factory = new GomeeFactory();

                var member = uow.MemberRepository.Get(memberId);
                var gomee = factory.CreateGomee(member);
                gomee.Caption = caption;
                gomee.Address = address;
                gomee.Description = description;
                gomee.Latitude = latitude;
                gomee.Longitude = longitude;
                gomee.GomeeType = type;

                uow.GomeeRepository.Add(gomee);
                uow.PersistAll();

                response.Id = gomee.Id;
                response.MemberId = gomee.Member.Id;
                response.Caption = gomee.Caption;
                response.Address = gomee.Address;
                response.Description = gomee.Description;
                response.Latitude = gomee.Latitude;
                response.Longitude = gomee.Longitude;
                response.Type = gomee.GomeeType;
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }
예제 #2
0
        public GomeesResponse GetTheirsGomees(Int32 memberId, Int32 firstIndex, Int32 lastIndex)
        {
            _serviceContext.ContentType = "text/html";

            if (firstIndex < 0)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "firstIndex",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IndexLessThan_String,
                            "firstIndex",
                            0),
                        Value = firstIndex.ToString(CultureInfo.InvariantCulture)
                    });

            if (lastIndex < 0)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "lastIndex",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IndexLessThan_String,
                            "lastIndex",
                            0),
                        Value = lastIndex.ToString(CultureInfo.InvariantCulture)
                    });

            if (lastIndex < firstIndex)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "lastIndex",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IndexLessThan_String,
                            "lastIndex",
                            "firstIndex"),
                        Value = lastIndex.ToString(CultureInfo.InvariantCulture)
                    });

            GomeesResponse response = new GomeesResponse();
            IUnitOfWork uow = null;

            try
            {
                uow = new UnitOfWork();
                var member = uow.MemberRepository.Get(memberId);

                var theirsGomees = uow.GomeeRepository.GetTheirsFor(member);
                var gomees = theirsGomees
                    .Skip(firstIndex)
                    .Take(lastIndex - firstIndex + 1)
                    .Select(g =>
                    {
                        return new GomeeResponse()
                        {
                            Id = g.Id,
                            MemberId = g.Member.Id,
                            Caption = g.Caption,
                            Address = g.Address,
                            Description = g.Description,
                            Latitude = g.Latitude,
                            Longitude = g.Longitude,
                            Type = g.GomeeType
                        };
                    });

                response.AllCount = theirsGomees.Count();
                response.ResponseCount = gomees.Count();
                response.FirstIndex = firstIndex;
                response.Gomees = gomees.ToArray();
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }
예제 #3
0
        public void RemoveGomee(Int32 memberId, Int32 gomeeId)
        {
            _serviceContext.ContentType = "text/html";

            IUnitOfWork uow = null;

            try
            {
                uow = new UnitOfWork();

                var member = uow.MemberRepository.Get(memberId);
                var gomees = uow.GomeeRepository.GetMineFor(member);

                if (gomees.Where(g => g.Id == gomeeId).Count() == 0)
                    throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "gomeeId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Gomee"),
                        Value = gomeeId.ToString(CultureInfo.InvariantCulture)
                    });

                var gomee = gomees.Where(g => g.Id == gomeeId).Single();

                var targets = uow.TargetRepository.GetFor(gomee);
                foreach (var target in targets)
                {
                    uow.TargetRepository.Remove(target);
                }

                uow.GomeeRepository.Remove(gomee);
                uow.PersistAll();
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }
        }
예제 #4
0
        public void RemoveFriend(
            Int32 memberId,
            Int32 friendMemberId)
        {
            _serviceContext.ContentType = "text/html";

            IUnitOfWork uow = null;

            try
            {
                uow = new UnitOfWork();

                var member = uow.MemberRepository.Get(memberId);
                var friends = uow.FriendRepository.GetFor(member);

                var friend = friends
                    .Where(f => f.Member1.Id == friendMemberId || f.Member2.Id == friendMemberId)
                    .SingleOrDefault();

                if (friend == null)
                    throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "friendMemberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Friend"),
                        Value = friendMemberId.ToString(CultureInfo.InvariantCulture)
                    });

                uow.FriendRepository.Remove(friend);
                uow.PersistAll();
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }
        }
예제 #5
0
        public FriendResponse AddFriend(
            Int32 memberId,
            Int32 friendMemberId)
        {
            _serviceContext.ContentType = "text/html";

            FriendResponse response = new FriendResponse();
            IUnitOfWork uow = null;
            IFriendFactory factory = null;

            try
            {
                uow = new UnitOfWork();
                factory = new FriendFactory();

                var member1 = uow.MemberRepository.Get(memberId);
                var member2 = uow.MemberRepository.Get(friendMemberId);

                var friend = factory.CreateFriend(member1, member2);
                uow.FriendRepository.Add(friend);
                uow.PersistAll();

                response.Id = friend.Id;
                response.Member1Id = friend.Member1.Id;
                response.Member2Id = friend.Member2.Id;
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }
예제 #6
0
        public FriendsResponse GetFriends(
            Int32 memberId,
            Int32 firstIndex,
            Int32 lastIndex)
        {
            _serviceContext.ContentType = "text/html";

            if (firstIndex < 0)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "firstIndex",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IndexLessThan_String,
                            "firstIndex",
                            0),
                        Value = firstIndex.ToString(CultureInfo.InvariantCulture)
                    });

            if (lastIndex < 0)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "lastIndex",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IndexLessThan_String,
                            "lastIndex",
                            0),
                        Value = lastIndex.ToString(CultureInfo.InvariantCulture)
                    });

            if (lastIndex < firstIndex)
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "lastIndex",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IndexLessThan_String,
                            "lastIndex",
                            "firstIndex"),
                        Value = lastIndex.ToString(CultureInfo.InvariantCulture)
                    });

            FriendsResponse response = new FriendsResponse();
            IUnitOfWork uow = null;

            try
            {
                uow = new UnitOfWork();
                var member = uow.MemberRepository.Get(memberId);

                var friends = uow.FriendRepository.GetFor(member);
                var members = friends
                    .Skip(firstIndex)
                    .Take(lastIndex - firstIndex + 1)
                    .Select(f =>
                    {
                        var m = f.Member1;
                        if (m.Id == memberId)
                        {
                            m = f.Member2;
                        }

                        return new MemberResponse()
                        {
                            Id = m.Id,
                            Email = m.Email
                        };
                    });

                response.AllCount = friends.Count();
                response.ResponseCount = members.Count();
                response.FirstIndex = firstIndex;
                response.Friends = members.ToArray();
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }
예제 #7
0
        public void RemoveTarget(Int32 memberId, Int32 gomeeId, Int32 targetId)
        {
            _serviceContext.ContentType = "text/html";

            IUnitOfWork uow = null;
            ITargetFactory factory = null;

            try
            {
                uow = new UnitOfWork();
                factory = new TargetFactory();

                var member = uow.MemberRepository.Get(memberId);
                var targetMember = uow.MemberRepository.Get(targetId);

                var gomee = uow.GomeeRepository.GetMineFor(member).Where(g => g.Id == gomeeId).SingleOrDefault();
                if (gomee == null)
                    gomee = uow.GomeeRepository.GetTheirsFor(member).Where(g => g.Id == gomeeId).SingleOrDefault();

                uow.PersistAll();
            }
            catch (ArgumentException e)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }
        }
예제 #8
0
        public TargetResponse AddTarget(Int32 memberId, Int32 gomeeId, Int32 targetId)
        {
            _serviceContext.ContentType = "text/html";

            TargetResponse response = new TargetResponse();
            IUnitOfWork uow = null;
            ITargetFactory factory = null;

            try
            {
                uow = new UnitOfWork();
                factory = new TargetFactory();

                var member = uow.MemberRepository.Get(memberId);
                var targetMember = uow.MemberRepository.Get(targetId);
                var gomees = uow.GomeeRepository.GetMineFor(member);

                if (gomees.Where(g => g.Id == gomeeId).Count() == 0)
                    throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "gomeeId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Gomee"),
                        Value = gomeeId.ToString(CultureInfo.InvariantCulture)
                    });

                var gomee = gomees.Where(g => g.Id == gomeeId).Single();

                var target = factory.CreateGomeeTarget(targetMember, gomee);
                uow.TargetRepository.Add(target);
                uow.PersistAll();

                response.Id = target.Id;
                response.MemberId = target.Member.Id;
                response.GomeeId = target.Gomee.Id;
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }
예제 #9
0
        public MemberResponse GetMember(Int32 memberId)
        {
            _serviceContext.ContentType = "text/html";

            MemberResponse response = new MemberResponse();
            IUnitOfWork uow = null;

            try
            {
                uow = new UnitOfWork();

                var member = uow.MemberRepository.Get(memberId);

                response.Id = member.Id;
                response.Email = member.Email;
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "memberId",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityNotExist_String,
                            "Member"),
                        Value = memberId.ToString(CultureInfo.InvariantCulture)
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }
예제 #10
0
        public MemberResponse AddMember(String email)
        {
            _serviceContext.ContentType = "text/html";

            MemberResponse response = new MemberResponse();
            IUnitOfWork uow = null;
            IMemberFactory factory = null;

            try
            {
                uow = new UnitOfWork();
                factory = new MemberFactory();

                var member = factory.CreateMember(email);
                uow.MemberRepository.Add(member);
                uow.PersistAll();

                response.Id = member.Id;
                response.Email = member.Email;
            }
            catch (ArgumentNullException)
            {
                throw FaultFactory.CreateFaultException(
                        new ArgumentFault()
                        {
                            Argument = "email",
                            Message = String.Format(
                                CultureInfo.InvariantCulture,
                                Resources.CannotBeNullOrEmptyString_String,
                                "Email",
                                0),
                            Value = email
                        });
            }
            catch (ArgumentException)
            {
                throw FaultFactory.CreateFaultException(
                    new ArgumentFault()
                    {
                        Argument = "email",
                        Message = String.Format(
                            CultureInfo.InvariantCulture,
                            Resources.EntityAllreadyExist_String,
                            "Member"),
                        Value = email
                    });
            }
            finally
            {
                if (uow != null)
                {
                    uow.Close();
                }
            }

            return response;
        }