public QuantityConstraint SaveConstraint(QuantityConstraint constraint)
 {
     using (IUnitOfWork uow = this.GetUnitOfWork())
     {
         IRepository <QuantityConstraint> repo = uow.GetRepository <QuantityConstraint>();
         repo.Put(constraint);
         uow.Commit();
     }
     return(constraint);
 }
        public bool DeleteConstraint(QuantityConstraint constraint)
        {
            Contract.Requires(constraint != null);
            Contract.Requires(constraint.Id >= 0);

            using (IUnitOfWork uow = this.GetUnitOfWork())
            {
                IRepository <QuantityConstraint> repo = uow.GetRepository <QuantityConstraint>();
                constraint = repo.Reload(constraint);
                repo.Delete(constraint);
                uow.Commit();
            }
            return(true);
        }
        public QuantityConstraintModel(QuantityConstraint constraint)
        {
            Id                 = constraint.Id;
            Index              = constraint.Index;
            Quantity           = constraint.Quantity;
            ComparisonOperator = constraint.ComparisonOperator;
            Negated            = constraint.Negated;
            SelectedMode       = constraint.Mode;
            Description        = constraint.Description;

            AllUsers = constraint.AllUsers;
            ForEver  = constraint.ForEver;

            if (constraint.ForPeriodicTimeInterval != null)
            {
                ForPeriodicTimeInterval       = new PeriodicTimeIntervalModel(constraint.ForPeriodicTimeInterval, (DateTime)constraint.ForTimeInterval.StartTime.Instant, constraint.ForTimeInterval.EndTime.Instant);
                ForPeriodicTimeInterval.IsSet = true;
                ForPeriodicTimeInterval.Index = constraint.Index;
            }
            else
            {
                ForPeriodicTimeInterval = new PeriodicTimeIntervalModel();
            }

            ForTimeInterval = new TimeInterval();

            if (constraint.ForPerson != null)
            {
                if (constraint.ForPerson.Self is PersonGroup)
                {
                    PersonGroup pGroup = (PersonGroup)constraint.ForPerson.Self;
                    //pGroup.Users.ToList().ForEach(u => ForPersons.Add(new PersonInConstraint(u, pGroup.Id, constraint.Index)));
                }
                else if (constraint.ForPerson.Self is IndividualPerson)
                {
                    IndividualPerson iPerson = (IndividualPerson)constraint.ForPerson.Self;
                    //ForPersons.Add(new PersonInConstraint(iPerson.Person, iPerson.Id, constraint.Index));
                }
            }

            if (constraint.ForTimeInterval != null)
            {
                TimeInterval timeInterval = new TimeInterval();
                timeInterval           = constraint.ForTimeInterval.Self;
                timeInterval.StartTime = constraint.ForTimeInterval.StartTime.Self;
                timeInterval.EndTime   = constraint.ForTimeInterval.EndTime.Self;
                ForTimeInterval        = timeInterval;
            }
        }
        public QuantityConstraint UpdateConstraint(QuantityConstraint constraint)
        {
            Contract.Requires(constraint != null, "provided entity can not be null");
            Contract.Requires(constraint.Id >= 0, "provided entity must have a permanent ID");

            Contract.Ensures(Contract.Result <QuantityConstraint>() != null && Contract.Result <QuantityConstraint>().Id >= 0, "No entity is persisted!");

            using (IUnitOfWork uow = this.GetUnitOfWork())
            {
                IRepository <QuantityConstraint> repo = uow.GetRepository <QuantityConstraint>();
                repo.Merge(constraint);
                var merged = repo.Get(constraint.Id);
                repo.Put(merged);
                uow.Commit();
            }
            return(constraint);
        }