/// <summary>
 /// Creates the specified point system.
 /// </summary>
 /// <param name="pointSystem">The point system.</param>
 /// <param name="messageType">Type of the message.</param>
 /// <param name="reward">The reward.</param>
 /// <returns></returns>
 public static Entites.MessageTypeToPointSystem Create(Entites.PointSystem pointSystem,
                                                       Entites.MessageType messageType, float reward)
 {
     return
         (DAL.MessageTypeToPointSystem.Create(new Entites.MessageTypeToPointSystem(pointSystem, messageType,
                                                                                   reward)));
 }
 /// <summary>
 /// Creates the specified point system.
 /// </summary>
 /// <param name="pointSystem">The point system.</param>
 /// <returns>The same point system with an updated ID.</returns>
 public static Entites.PointSystem Create(Entites.PointSystem pointSystem)
 {
     Entites.PointSystem reference = ClearReferences(pointSystem);
     using (TerministratorContext context = new TerministratorContext(true))
     {
         context.PointSystem.Add(pointSystem);
         context.SaveChanges();
     }
     return(AddReferences(pointSystem, reference));
 }
        /// <summary>
        /// Loads the message type collection of the point system..
        /// </summary>
        /// <param name="pointSystem">The point system.</param>
        /// <returns>The same point system with an initialized message type to point system collection.</returns>
        public static Entites.PointSystem LoadMessageTypes(Entites.PointSystem pointSystem)
        {
            if (pointSystem == null)
            {
                return(null);
            }

            using (TerministratorContext context = new TerministratorContext(true))
            {
                context.PointSystem.Attach(pointSystem);
                context.Entry(pointSystem).Collection(p => p.MessageTypeToPointSystem).Load();
            }
            return(pointSystem);
        }
 /// <summary>
 /// Adds the references of the second arguement in the first one.
 /// </summary>
 /// <param name="pointSystem">The point system to add the references in.</param>
 /// <param name="reference">The references.</param>
 /// <returns>The first arguement.</returns>
 private static Entites.PointSystem AddReferences(Entites.PointSystem pointSystem, Entites.PointSystem reference)
 {
     pointSystem.Channel = reference.Channel;
     return(pointSystem);
 }
 /// <summary>
 /// Clears the references of the point system.
 /// </summary>
 /// <param name="pointSystem">The point system.</param>
 /// <returns>A copy of the point system given in entry with only the references.</returns>
 private static Entites.PointSystem ClearReferences(Entites.PointSystem pointSystem)
 {
     Entites.PointSystem reference = new Entites.PointSystem(pointSystem.Channel);
     pointSystem.Channel = null;
     return(reference);
 }