/// <summary>
        /// Only used by backoffice to change all reservation's data except foreign keys (serviceId, customerId)
        /// </summary>
        /// <param name="reservation"></param>
        /// <returns></returns>
        public bool ModifyReservationsFromBackOffice(Reservation reservation)
        {
            this.RefreshDataSet();

            int nbrRowsUpdated = -1;

            try
            {
                DataRow row = dp.ds.RESERVATION.Select(string.Format("RESERVATIONID = '{0}'", reservation.Id)).FirstOrDefault();
                row["RESERVATIONDATE"]       = reservation.ReservationDate;
                row["PLACEQUANTITY"]         = reservation.PlaceQuantity;
                row["SERVICE"]               = reservation.Service;
                row["RESTOCONFIRMATION"]     = reservation.RestoConfirmation;
                row["RESTOCONFIRMATIONDATE"] = (reservation.RestoConfirmation == true) ? DateTime.Now : DateTime.MaxValue;
                row["RESTOCOMMENTS"]         = reservation.RestoComments;

                using (RestoBook.Common.Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter daReservation = new Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter())
                {
                    nbrRowsUpdated = daReservation.Update(row);
                }
                return(nbrRowsUpdated > 0);
            }

            catch (System.NullReferenceException)
            {
                return(false);
            }
        }
        /// <summary>
        /// Delete given reservation
        /// </summary>
        /// <param name="reservation"></param>
        /// <param name="serviceId"></param>
        /// <returns></returns>
        public bool DeleteReservation(Reservation reservation)
        {
            this.RefreshDataSet();

            int nbrRowsDeleted = -1;

            using (RestoBook.Common.Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter daReservation = new Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter())
            {
                nbrRowsDeleted = daReservation.Delete(reservation.Id,
                                                      reservation.CustomerId,
                                                      reservation.ServiceId,
                                                      reservation.ReservationDate,
                                                      reservation.Service,
                                                      reservation.PlaceQuantity,
                                                      reservation.RestoConfirmation,
                                                      reservation.RestoConfirmationDate,
                                                      reservation.RestoComments,
                                                      reservation.IsEnabled);
            }
            return(nbrRowsDeleted > 0);
        }
        /// <summary>
        /// Input datas from confirmation by restaurant
        /// - change value from false to true in RestoConfirmation
        /// - change value of RestoConfirmationDate to DateTime.now
        /// - input comments if completed
        ///
        /// </summary>
        /// <param name="reservation"></param>
        /// <returns></returns>
        public bool ConfirmReservationFromResto(Reservation reservation)
        {
            this.RefreshDataSet();

            int nbrRowsUpdated = -1;

            try
            {
                DataRow row = dp.ds.RESERVATION.Select(string.Format("RESERVATIONID = '{0}'", reservation.Id)).FirstOrDefault();
                row["RESTOCONFIRMATION"]     = true;
                row["RESTOCONFIRMATIONDATE"] = DateTime.Now;
                row["RESTOCOMMENTS"]         = reservation.RestoComments;

                using (RestoBook.Common.Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter daReservation = new Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter())
                {
                    nbrRowsUpdated = daReservation.Update(row);
                }
                return(nbrRowsUpdated > 0);
            }

            catch (System.NullReferenceException)
            {
                return(false);
            }
        }
        /// <summary>
        /// Create a reservation
        /// ReservationDate has value DateTime.Now
        /// RestoConfirmationDate has value DateTime.MaxValue
        /// </summary>
        /// <param name="reservation"></param>
        /// <returns></returns>
        public bool CreateReservation(Reservation reservation)
        {
            this.RefreshDataSet();

            int nbrRowsCreated = -1;

            try
            {
                using (RestoBook.Common.Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter daReservation = new Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter())
                {
                    nbrRowsCreated = daReservation.Insert(
                        reservation.CustomerId,
                        reservation.ServiceId,
                        reservation.ReservationDate,
                        reservation.Service,
                        reservation.PlaceQuantity,
                        reservation.RestoConfirmation     = false,
                        reservation.RestoConfirmationDate = DateTime.MaxValue.Date,
                        reservation.RestoComments         = reservation.RestoComments,
                        reservation.IsEnabled             = true);
                }
                return(nbrRowsCreated > 0);
            }

            catch (System.Data.SqlClient.SqlException)
            {
                return(false);
            }

            catch (System.Data.StrongTypingException)
            {
                return(false);
            }

            catch (System.NullReferenceException)
            {
                return(false);
            }
        }
        /// <summary>
        /// This method allow customer to modify number of places reserved
        /// Other datas can't be modified
        /// A reservation must be deleted and recreated in place to modify customer or service
        /// </summary>
        /// <param name="reservation"></param>
        /// <returns>bool if creation succeed</returns>
        public bool ModifyReservationFromCustomer(Reservation reservation)
        {
            this.RefreshDataSet();

            int nbrRowsUpdated = -1;

            try
            {
                DataRow row = dp.ds.RESERVATION.Select(string.Format("RESERVATIONID = '{0}'", reservation.Id)).FirstOrDefault();
                //string test = row["RESERVATIONID"].ToString();
                //string test1 = row["CUSTOMERID"].ToString();
                //string test2 = row["SERVICEID"].ToString();
                //string test3 = row["RESERVATIONDATE"].ToString();
                row["RESERVATIONDATE"]       = reservation.ReservationDate;
                row["SERVICE"]               = reservation.Service;
                row["PLACEQUANTITY"]         = reservation.PlaceQuantity;
                row["RESTOCONFIRMATION"]     = reservation.RestoConfirmation;
                row["RESTOCONFIRMATIONDATE"] = reservation.RestoConfirmationDate;
                row["RESTOCOMMENTS"]         = reservation.RestoComments;
                row["ENABLE"] = reservation.IsEnabled;


                using (RestoBook.Common.Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter daReservation = new Model.DataSetRestoBookTableAdapters.RESERVATIONTableAdapter())
                {
                    nbrRowsUpdated = daReservation.Update(row);
                }
                return(nbrRowsUpdated > 0);
            }
            catch (System.NullReferenceException)
            {
                return(false);
            }
        }