/// <summary>
        /// Deletes the <see cref="DeliveryNote"/>.
        /// </summary>
        /// <param name="deliveryNote">The delivery note which will be canceled.</param>
        public void ActiveDeliveryNote(DeliveryNotePrimitive deliveryNotePrimitive)
        {
            try
              {
            using (SmartWorkingEntities context = new SmartWorkingEntities())
            {
              DeliveryNote deliveryNote = deliveryNotePrimitive.GetEntity();

              DeliveryNote existingObject = context.DeliveryNotes.Where(x => x.Id == deliveryNote.Id).FirstOrDefault();

              //no record of this item in the DB, item being passed in has a PK
              if (existingObject == null)
              {
            throw new Exception("Only exists delivery note can be canceled.");
              }

              deliveryNote.DeactivationReason = string.Empty;
              deliveryNote.Deactivated = null;
              context.DeliveryNotes.ApplyCurrentValues(deliveryNote);

              context.SaveChanges();
            }
              }
              catch (Exception e)
              {
            throw new FaultException<ExceptionDetail>(new ExceptionDetail(e), e.Message);
              }
        }
        /// <summary>
        /// Updates the <see cref="DeliveryNote"/>.
        /// </summary>
        /// <param name="deliveryNote">The delivery note which will be updated.</param>
        public DeliveryNotePrimitive CreateOrUpdateDeliveryNote(DeliveryNotePrimitive deliveryNotePrimitive)
        {
            try
              {
            using (SmartWorkingEntities context = new SmartWorkingEntities())
            {
              DeliveryNote deliveryNote = deliveryNotePrimitive.GetEntity();

              DeliveryNote existingObject = context.DeliveryNotes.Where(x => x.Id == deliveryNote.Id).FirstOrDefault();

              //no record of this item in the DB, item being passed in has a PK
              if (existingObject == null && deliveryNote.Id > 0)
              {
            throw new FaultException<ExceptionDetail>(new ExceptionDetail(new Exception("Błąd zapisu do bazy")),
                                                        "Obiekt nie istniał w bazie, a jego Id jest większe od 0.");
              }

              DeliveryNote checkingNumber =
            context.DeliveryNotes.Where(x => x.Number == deliveryNote.Number && x.Year == deliveryNote.Year).
              FirstOrDefault();

              //Item has no PK value, must be new);)
              if (deliveryNote.Id <= 0)
              {
            deliveryNote.DateDrawing = DateTime.Now;
            //deliveryNote.Number = GetNextDeliveryNumber();
            if (checkingNumber != null)
            {
              throw new Exception("Ten numer WZ'tki juz istnieje!");
            }
            context.DeliveryNotes.AddObject(deliveryNote);

              }
              //Item was retrieved, and the item passed has a valid ID, do an update
              else
              {
            if (checkingNumber != null && checkingNumber.Id != deliveryNote.Id)
            {
              throw new Exception("Ten numer WZ'tki juz istnieje!");
            }
            context.DeliveryNotes.ApplyCurrentValues(deliveryNote);
              }

              context.SaveChanges();

              return deliveryNote;
            }
              }
              catch (Exception e)
              {
            throw new FaultException<ExceptionDetail>(new ExceptionDetail(e), e.Message);
              }
        }
        public static DeliveryNotePrimitive GetPrimitive(this DeliveryNote entity)
        {
            DeliveryNotePrimitive primitive = new DeliveryNotePrimitive();

                primitive.Id = entity.Id;

                primitive.Driver_Id = entity.Driver_Id;

                primitive.DateDrawing = entity.DateDrawing;

                primitive.DateOfArrival = entity.DateOfArrival;

                primitive.Drawer = entity.Drawer;

                primitive.Car_Id = entity.Car_Id;

                primitive.Amount = entity.Amount;

                primitive.Order_Id = entity.Order_Id;

                primitive.Deleted = entity.Deleted;

                primitive.Deactivated = entity.Deactivated;

                primitive.Number = entity.Number;

                primitive.Year = entity.Year;

                primitive.DeactivationReason = entity.DeactivationReason;

                return primitive;
        }
        public static DeliveryNotePrimitive GetPrimitiveCopy(this DeliveryNotePrimitive primitiveToCopy)
        {
            if (primitiveToCopy == null) return null;

                DeliveryNotePrimitive primitive = new DeliveryNotePrimitive();

                primitive.Id = primitiveToCopy.Id;

                primitive.Driver_Id = primitiveToCopy.Driver_Id;

                primitive.DateDrawing = primitiveToCopy.DateDrawing;

                primitive.DateOfArrival = primitiveToCopy.DateOfArrival;

                primitive.Drawer = primitiveToCopy.Drawer;

                primitive.Car_Id = primitiveToCopy.Car_Id;

                primitive.Amount = primitiveToCopy.Amount;

                primitive.Order_Id = primitiveToCopy.Order_Id;

                primitive.Deleted = primitiveToCopy.Deleted;

                primitive.Deactivated = primitiveToCopy.Deactivated;

                primitive.Number = primitiveToCopy.Number;

                primitive.Year = primitiveToCopy.Year;

                primitive.DeactivationReason = primitiveToCopy.DeactivationReason;

                return primitive;
        }