예제 #1
0
        public static int getTrackedPlanByCustID(int custID)
        {
            dlPlan dlP           = new dlPlan();
            int    trackedPlanID = 0;

            List <int> customerPlanIDs = dlP.getCustomerPlanIDs(custID);
            List <int> trackedPlanIDs  = dlP.getTrackedPlanIDs();

            List <int> trackedCustomerPlanIDs = customerPlanIDs.Intersect(trackedPlanIDs).ToList();

            if (trackedCustomerPlanIDs.Count() == 1)
            {
                trackedPlanID = trackedCustomerPlanIDs[0];
            }

            return(trackedPlanID);
        }
예제 #2
0
        public static int getTrackedPlanByCustID(int custID)
        {
            dlPlan dlP = new dlPlan();
            int trackedPlanID = 0;

               List<int> customerPlanIDs = dlP.getCustomerPlanIDs(custID);
               List<int> trackedPlanIDs =  dlP.getTrackedPlanIDs();

               List<int> trackedCustomerPlanIDs = customerPlanIDs.Intersect(trackedPlanIDs).ToList();
               if (trackedCustomerPlanIDs.Count() == 1)
               {
               trackedPlanID = trackedCustomerPlanIDs[0];
               }

               return trackedPlanID;
        }
예제 #3
0
        //copy system provided plan into a new plan owned by user
        public static int convertSystemPlanToUserPlan(int PlanID, int CustID, String planDesc)
        {
            int rowsAffected = 0;
            dlPlan dlP = new dlPlan();

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            SqlConnection conn = GetConnection(builder);

            //Create a SqlDataAdapter for the Suppliers table.
            SqlDataAdapter adapter = new SqlDataAdapter();

            conn.Open();

            DataTable FoodDetail = dlP.getFoodDetailTable(PlanID);
            DataTable Meal = dlP.getMealTable(PlanID);
            DataTable Plan = dlP.getPlanTable(PlanID);

            //the planID user is gonig to generate
            int newPlanID = dlP.getMaxPlanID() + 1;
            DateTime now = DateTime.Now;

            for (int i = 0; i < Plan.Rows.Count; i++)
            {
                Plan.Rows[i]["PlanID"] = newPlanID;
                Plan.Rows[i]["CreatedDate"] = now;
                Plan.Rows[i]["LastModifiedDate"] = now;
                Plan.Rows[i]["Customed"] = true;
                Plan.Rows[i]["PlanDesc"] = planDesc;
            }

            for (int i = 0; i < Meal.Rows.Count; i++)
            {
                Meal.Rows[i]["PlanID"] = newPlanID;
                if (Meal.Columns.Contains("MealID"))
                {
                    Meal.Columns.Remove("MealID");
                }
            }
            //populate Plan table
            string sql1 = "INSERT INTO [Plan] (PlanID, CreatedDate, LastModifiedDate, Customed, Categories, PlanDesc, Tracked ) VALUES (@PlanID, @CreatedDate, @LastModifiedDate, @Customed, @Categories, @PlanDesc, @Tracked)";

            foreach (DataRow r in Plan.Rows)
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql1;
                cmd.Parameters.AddWithValue("@PlanID", r["PlanID"]);
                cmd.Parameters.AddWithValue("@CreatedDate", r["CreatedDate"]);
                cmd.Parameters.AddWithValue("@LastModifiedDate", r["LastModifiedDate"]);
                cmd.Parameters.AddWithValue("@Customed", r["Customed"]);
                cmd.Parameters.AddWithValue("@Categories", r["Categories"]);
                cmd.Parameters.AddWithValue("@PlanDesc", r["PlanDesc"]);
                cmd.Parameters.AddWithValue("@Tracked", r["Tracked"]);
                rowsAffected += cmd.ExecuteNonQuery();
            }

            //populate Meal table
            string sql2 = "INSERT INTO Meal (MealType, Day, PlanID) VALUES (@MealType, @Day, @PlanID)";

            foreach (DataRow r in Meal.Rows)
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql2;
                cmd.Parameters.AddWithValue("@MealType", r["MealType"]);
                cmd.Parameters.AddWithValue("@Day", r["Day"]);
                cmd.Parameters.AddWithValue("@PlanID", r["PlanID"]);

                rowsAffected += cmd.ExecuteNonQuery();
            }
            conn.Close();

            int j = 0;
            //after insert meal table
            List<int> MealIDs = getMealIDsInMeal(newPlanID);
            for (int i = 0; i < FoodDetail.Rows.Count; i++)
            {
                int nextMealID = 0;
                int currentMealID = (int)FoodDetail.Rows[i]["MealID"];
                if (i < FoodDetail.Rows.Count - 1)
                {
                    nextMealID = (int)FoodDetail.Rows[i + 1]["MealID"];
                }
                if (currentMealID != nextMealID)
                {
                    FoodDetail.Rows[i]["MealID"] = MealIDs[j];
                    j++;
                }
                else
                {
                    FoodDetail.Rows[i]["MealID"] = MealIDs[j];
                }
            }
            //populate FoodDetail table
            string sql3 = "INSERT INTO FoodDetail (MealID, FoodID, Quantity, Weight) VALUES (@MealID, @FoodID, @Quantity,@Weight)";

            conn.Open();
            foreach (DataRow r in FoodDetail.Rows)
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql3;
                cmd.Parameters.AddWithValue("@MealID", r["MealID"]);
                cmd.Parameters.AddWithValue("@FoodID", r["FoodID"]);
                cmd.Parameters.AddWithValue("@Quantity", r["Quantity"]);
                cmd.Parameters.AddWithValue("@Weight", r["Weight"]);

                rowsAffected += cmd.ExecuteNonQuery();
            }
            conn.Close();
            rowsAffected += dlP.insert_Into_CustomerPlan(newPlanID, CustID);

            return rowsAffected;
        }
예제 #4
0
        public static String deleteCustomerPlan(int planID, int custID)
        {
            String message = "";
            int effectedRows = 0;
            dlPlan dlPlan = new dlPlan();
            List<int> mealIDs = CatalogAccess.getMealIDsInMeal(planID);

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            SqlConnection conn = GetConnection(builder);
            conn.Open();

            SqlCommand cmd = conn.CreateCommand();
            SqlTransaction transaction;

            // Start a local transaction.
            transaction = conn.BeginTransaction("DeleteCustomerPlan");

            // Must assign both transaction object and connection
            // to Command object for a pending local transaction
            cmd.Connection = conn;
            cmd.Transaction = transaction;

            try
            {
                //CustomerPlan
                cmd.CommandText = "delete from CustomerPlan where PlanID=@PlanID and CustID=@CustID";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@PlanID", planID);
                cmd.Parameters.AddWithValue("@CustID", custID);
                effectedRows += cmd.ExecuteNonQuery();

                //FoodDetail
                cmd.CommandText = "delete from FoodDetail where MealID=@MealID";
                foreach (int mealID in mealIDs)
                {
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@MealID", mealID);
                    effectedRows += cmd.ExecuteNonQuery();

                }

                //Meal
                cmd.CommandText = "delete from Meal where PlanID=@PlanID";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@PlanID", planID);

                effectedRows += cmd.ExecuteNonQuery();

                //Plan
                cmd.CommandText = "delete from [Plan] where PlanID=@PlanID";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@PlanID", planID);

                effectedRows += cmd.ExecuteNonQuery();
                if (effectedRows > 0)
                {
                    message += "Effeced Rows: " + effectedRows;
                }
                else
                {
                    message += "Plan " + planID + " does not exist";
                }
                // Attempt to commit the transaction.
                transaction.Commit();
            }

            catch (Exception ex)
            {
                Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
                Console.WriteLine("  Message: {0}", ex.Message);
                message += "Commit Exception Type: " + ex.GetType() + "\tMessage: " + ex.Message;
                // Attempt to roll back the transaction.
                try
                {
                    transaction.Rollback();
                }
                catch (Exception ex2)
                {
                    // This catch block will handle any errors that may have occurred
                    // on the server that would cause the rollback to fail, such as
                    // a closed connection.
                    Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                    Console.WriteLine("  Message: {0}", ex2.Message);
                    message += "Rollback Exception Type: {0}" + ex2.GetType() + "  Message: {0}" + ex2.Message;
                }
            }
            finally
            {
                conn.Close();

            }
            return message;
        }
예제 #5
0
        public static String deleteCustomerPlan(int planID, int custID)
        {
            String     message      = "";
            int        effectedRows = 0;
            dlPlan     dlPlan       = new dlPlan();
            List <int> mealIDs      = CatalogAccess.getMealIDsInMeal(planID);

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            SqlConnection conn = GetConnection(builder);

            conn.Open();

            SqlCommand     cmd = conn.CreateCommand();
            SqlTransaction transaction;

            // Start a local transaction.
            transaction = conn.BeginTransaction("DeleteCustomerPlan");

            // Must assign both transaction object and connection
            // to Command object for a pending local transaction
            cmd.Connection  = conn;
            cmd.Transaction = transaction;

            try
            {
                //CustomerPlan
                cmd.CommandText = "delete from CustomerPlan where PlanID=@PlanID and CustID=@CustID";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@PlanID", planID);
                cmd.Parameters.AddWithValue("@CustID", custID);
                effectedRows += cmd.ExecuteNonQuery();

                //FoodDetail
                cmd.CommandText = "delete from FoodDetail where MealID=@MealID";
                foreach (int mealID in mealIDs)
                {
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@MealID", mealID);
                    effectedRows += cmd.ExecuteNonQuery();
                }

                //Meal
                cmd.CommandText = "delete from Meal where PlanID=@PlanID";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@PlanID", planID);

                effectedRows += cmd.ExecuteNonQuery();

                //Plan
                cmd.CommandText = "delete from [Plan] where PlanID=@PlanID";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@PlanID", planID);

                effectedRows += cmd.ExecuteNonQuery();
                if (effectedRows > 0)
                {
                    message += "Effeced Rows: " + effectedRows;
                }
                else
                {
                    message += "Plan " + planID + " does not exist";
                }
                // Attempt to commit the transaction.
                transaction.Commit();
            }

            catch (Exception ex)
            {
                Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
                Console.WriteLine("  Message: {0}", ex.Message);
                message += "Commit Exception Type: " + ex.GetType() + "\tMessage: " + ex.Message;
                // Attempt to roll back the transaction.
                try
                {
                    transaction.Rollback();
                }
                catch (Exception ex2)
                {
                    // This catch block will handle any errors that may have occurred
                    // on the server that would cause the rollback to fail, such as
                    // a closed connection.
                    Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                    Console.WriteLine("  Message: {0}", ex2.Message);
                    message += "Rollback Exception Type: {0}" + ex2.GetType() + "  Message: {0}" + ex2.Message;
                }
            }
            finally
            {
                conn.Close();
            }
            return(message);
        }
예제 #6
0
        //copy system provided plan into a new plan owned by user
        public static int convertSystemPlanToUserPlan(int PlanID, int CustID, String planDesc)
        {
            int    rowsAffected = 0;
            dlPlan dlP          = new dlPlan();

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            SqlConnection conn = GetConnection(builder);

            //Create a SqlDataAdapter for the Suppliers table.
            SqlDataAdapter adapter = new SqlDataAdapter();

            conn.Open();

            DataTable FoodDetail = dlP.getFoodDetailTable(PlanID);
            DataTable Meal       = dlP.getMealTable(PlanID);
            DataTable Plan       = dlP.getPlanTable(PlanID);

            //the planID user is gonig to generate
            int      newPlanID = dlP.getMaxPlanID() + 1;
            DateTime now       = DateTime.Now;

            for (int i = 0; i < Plan.Rows.Count; i++)
            {
                Plan.Rows[i]["PlanID"]           = newPlanID;
                Plan.Rows[i]["CreatedDate"]      = now;
                Plan.Rows[i]["LastModifiedDate"] = now;
                Plan.Rows[i]["Customed"]         = true;
                Plan.Rows[i]["PlanDesc"]         = planDesc;
            }

            for (int i = 0; i < Meal.Rows.Count; i++)
            {
                Meal.Rows[i]["PlanID"] = newPlanID;
                if (Meal.Columns.Contains("MealID"))
                {
                    Meal.Columns.Remove("MealID");
                }
            }
            //populate Plan table
            string sql1 = "INSERT INTO [Plan] (PlanID, CreatedDate, LastModifiedDate, Customed, Categories, PlanDesc, Tracked ) VALUES (@PlanID, @CreatedDate, @LastModifiedDate, @Customed, @Categories, @PlanDesc, @Tracked)";


            foreach (DataRow r in Plan.Rows)
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql1;
                cmd.Parameters.AddWithValue("@PlanID", r["PlanID"]);
                cmd.Parameters.AddWithValue("@CreatedDate", r["CreatedDate"]);
                cmd.Parameters.AddWithValue("@LastModifiedDate", r["LastModifiedDate"]);
                cmd.Parameters.AddWithValue("@Customed", r["Customed"]);
                cmd.Parameters.AddWithValue("@Categories", r["Categories"]);
                cmd.Parameters.AddWithValue("@PlanDesc", r["PlanDesc"]);
                cmd.Parameters.AddWithValue("@Tracked", r["Tracked"]);
                rowsAffected += cmd.ExecuteNonQuery();
            }

            //populate Meal table
            string sql2 = "INSERT INTO Meal (MealType, Day, PlanID) VALUES (@MealType, @Day, @PlanID)";


            foreach (DataRow r in Meal.Rows)
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql2;
                cmd.Parameters.AddWithValue("@MealType", r["MealType"]);
                cmd.Parameters.AddWithValue("@Day", r["Day"]);
                cmd.Parameters.AddWithValue("@PlanID", r["PlanID"]);

                rowsAffected += cmd.ExecuteNonQuery();
            }
            conn.Close();


            int j = 0;
            //after insert meal table
            List <int> MealIDs = getMealIDsInMeal(newPlanID);

            for (int i = 0; i < FoodDetail.Rows.Count; i++)
            {
                int nextMealID    = 0;
                int currentMealID = (int)FoodDetail.Rows[i]["MealID"];
                if (i < FoodDetail.Rows.Count - 1)
                {
                    nextMealID = (int)FoodDetail.Rows[i + 1]["MealID"];
                }
                if (currentMealID != nextMealID)
                {
                    FoodDetail.Rows[i]["MealID"] = MealIDs[j];
                    j++;
                }
                else
                {
                    FoodDetail.Rows[i]["MealID"] = MealIDs[j];
                }
            }
            //populate FoodDetail table
            string sql3 = "INSERT INTO FoodDetail (MealID, FoodID, Quantity, Weight) VALUES (@MealID, @FoodID, @Quantity,@Weight)";

            conn.Open();
            foreach (DataRow r in FoodDetail.Rows)
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql3;
                cmd.Parameters.AddWithValue("@MealID", r["MealID"]);
                cmd.Parameters.AddWithValue("@FoodID", r["FoodID"]);
                cmd.Parameters.AddWithValue("@Quantity", r["Quantity"]);
                cmd.Parameters.AddWithValue("@Weight", r["Weight"]);

                rowsAffected += cmd.ExecuteNonQuery();
            }
            conn.Close();
            rowsAffected += dlP.insert_Into_CustomerPlan(newPlanID, CustID);

            return(rowsAffected);
        }