public When_creating_gomeeTarget()
        {
            _memberFactory = new MemberFactory();
            _gomeeFactory = new GomeeFactory();
            _gomeeTargetFactory = new TargetFactory();

            _member = _memberFactory.CreateMember("*****@*****.**");
            _gomee = _gomeeFactory.CreateGomee(_member);
            _gomeeTarget = _gomeeTargetFactory.CreateGomeeTarget(_member, _gomee);
        }
        public static void SetUp(TestContext context)
        {
            _unitOfWork = new UnitOfWork();
            _memberFactory = new MemberFactory();
            _gomeeFactory = new GomeeFactory();
            _targetFactory = new TargetFactory();
            _targetDecorator = new TargetDecorator(_targetFactory, _unitOfWork.TargetRepository);

            _member = _memberFactory.CreateMember("*****@*****.**");
            _gomee = _gomeeFactory.CreateGomee(_member);

            _target = _targetDecorator.CreateTarget(_member, _gomee);
        }
        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();
                }
            }
        }
        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;
        }