コード例 #1
0
        // POST: api/JobCard
        public string Post(HttpRequestMessage value)
        {
            try
            {
                string  message = HttpContext.Current.Server.UrlDecode(value.Content.ReadAsStringAsync().Result).Substring(5);
                JObject json    = JObject.Parse(message);

                JArray partDetails = (JArray)json["details"];

                Job_Card jc      = new Job_Card();
                int      job_key = db.Job_Card.Count() == 0 ? 1 : (from t in db.Job_Card
                                                                   orderby t.Job_Card_ID descending
                                                                   select t.Job_Card_ID).First() + 1;

                jc.Job_Card_ID          = job_key;
                jc.Job_Card_Date        = (DateTime)json["Job_Card_Date"];
                jc.Job_Card_Status_ID   = (int)json["Job_Card_Status_ID"];
                jc.Job_Card_Priority_ID = 2;

                db.Job_Card.Add(jc);
                db.SaveChanges();
                int detail_key = db.Job_Card_Detail.Count() == 0 ? 1 : (from t in db.Job_Card_Detail
                                                                        orderby t.Job_Card_Details_ID descending
                                                                        select t.Job_Card_Details_ID).First() + 1;

                foreach (JObject part in partDetails)
                {
                    Job_Card_Detail jcd = new Job_Card_Detail();
                    jcd.Job_Card_Details_ID = detail_key;
                    detail_key++;

                    jcd.Part_Type_ID = (int)part["Part_Type_ID"];
                    jcd.Job_Card_ID  = job_key;
                    jcd.Non_Manual   = Convert.ToBoolean((string)part["Non_Manual"]);
                    jcd.Quantity     = (int)part["Quantity"];

                    db.Job_Card_Detail.Add(jcd);
                    db.SaveChanges();

                    //2. Handle child dependencies
                    checkForChildren(jcd.Part_Type_ID, jcd.Quantity, job_key, "Manufacturing");

                    generateUniqueParts(jcd.Quantity, jcd.Part_Type_ID, 0, detail_key - 1, "Manufacturing");
                }

                return("true|Job Card #" + job_key + " successfully added.");
            }
            catch (Exception e)
            {
                ExceptionLog.LogException(e, "JobCardController POST");
                return("false|An error has occured adding the Job Card to the system.");
            }
        }
コード例 #2
0
        private void assignAvailableParts(int part_ID, int job_card_detail_ID)
        {
            Job_Card_Detail jcd = new Job_Card_Detail();

            jcd = (from p in db.Job_Card_Detail
                   where p.Job_Card_Details_ID == job_card_detail_ID
                   select p).First();

            Part part = new Part();

            part = (from p in db.Parts
                    where p.Part_ID == part_ID
                    select p).First();

            jcd.Parts.Add(part);

            db.SaveChanges();
        }
コード例 #3
0
        private void checkForChildren(int part_type_ID, int quantity_requested, int job_card_ID, string type)
        {
            //(Armand) Check for dependencies i.e check if the part_type has any part dependencies in the recipe table
            //and make a list of children part_types.
            List <Recipe> dependencies = null;

            dependencies = (from p in db.Recipes
                            where p.Part_Type_ID == part_type_ID && p.Recipe_Type == "Part Type"
                            select p).ToList();

            if (dependencies != null)
            {
                foreach (Recipe pt in dependencies)
                {
                    int?child_ID = pt.Item_ID;

                    //(Armand) first check if there isn't alreayd an entry for the child's ID in job_card_detail
                    //where jcd.Part_Type_ID == child_ID and Job_Card_ID == job_card_ID and assign to jcd
                    Job_Card_Detail jcd = null;
                    jcd = (from p in db.Job_Card_Detail
                           where p.Part_Type_ID == child_ID && p.Job_Card_ID == job_card_ID
                           select p).FirstOrDefault();


                    int quantity = quantity_requested * pt.Quantity_Required;

                    if (jcd != null)
                    {
                        //add the required children parts to the quantity already requested
                        int new_quantity;
                        if (quantity > jcd.Quantity)
                        {
                            new_quantity = jcd.Quantity + quantity;
                        }
                        else
                        {
                            new_quantity = jcd.Quantity;
                        }

                        //update this existing record with the new quantity.

                        jcd.Quantity = new_quantity;
                        db.SaveChanges();
                    }
                    else
                    {
                        int detail_key = db.Job_Card_Detail.Count() == 0 ? 1 : (from t in db.Job_Card_Detail
                                                                                orderby t.Job_Card_Details_ID descending
                                                                                select t.Job_Card_Details_ID).First() + 1;

                        Job_Card_Detail jcd2 = new Job_Card_Detail();
                        jcd2.Job_Card_Details_ID = detail_key;

                        jcd2.Part_Type_ID = Convert.ToInt32(pt.Part_Type_ID);
                        jcd2.Job_Card_ID  = job_card_ID;
                        jcd2.Non_Manual   = true;
                        jcd2.Quantity     = quantity;

                        db.Job_Card_Detail.Add(jcd2);
                        db.SaveChanges();
                        //The id of the last inserted record i.e. the one above
                        int available = checkForPartAvailability(Convert.ToInt32(child_ID), quantity, detail_key);

                        //Calculate how many new parts must be generated
                        int how_many = quantity - available;

                        //Generate the new child parts
                        generateUniqueParts(how_many, Convert.ToInt32(child_ID), 1, detail_key, type);
                    }
                }
            }
        }
コード例 #4
0
        // POST: api/CustomerOrder
        public string Post(HttpRequestMessage value)
        {
            //    try
            //    {
            Model.Client_Order co = new Model.Client_Order();

            string  message = HttpContext.Current.Server.UrlDecode(value.Content.ReadAsStringAsync().Result).Substring(5);
            JObject json    = JObject.Parse(message);

            JObject orderDetails = (JObject)json["client"];
            JArray  parts        = (JArray)orderDetails["details"];
            string  todo         = (string)json["action"];

            int key = db.Client_Order.Count() == 0 ? 1 : (from t in db.Client_Order
                                                          orderby t.Client_Order_ID descending
                                                          select t.Client_Order_ID).First() + 1;

            co.Client_Order_ID          = key;
            co.Date                     = (DateTime)orderDetails["Date"];
            co.Reference_ID             = (string)orderDetails["Reference_ID"];
            co.Contact_ID               = (int)orderDetails["Contact_ID"];
            co.Client_ID                = (int)orderDetails["Client_ID"];
            co.Settlement_Discount_Rate = (double)orderDetails["Settlement_Discount_Rate"];
            co.Client_Order_Type_ID     = (int)orderDetails["Client_Order_Type_ID"];
            co.Client_Order_Status_ID   = 1;
            co.Settlement_Discount_Rate = (double)orderDetails["Settlement_Discount_Rate"];
            co.Delivery_Method_ID       = (int)orderDetails["Delivery_Method_ID"];
            co.VAT_Inclu                = Convert.ToBoolean((string)orderDetails["VAT_Inclu"]);
            co.Comment                  = (string)orderDetails["Comment"];

            string errorString = "false|";
            bool   error       = false;

            if ((from t in db.Client_Order
                 where t.Reference_ID == co.Reference_ID
                 select t).Count() != 0)
            {
                error        = true;
                errorString += "The Customer Order Reference entered already exists on the system. ";
            }

            if (error)
            {
                return(errorString);
            }

            Job_Card jc      = new Job_Card();
            int      job_key = db.Job_Card.Count() == 0 ? 1 : (from t in db.Job_Card
                                                               orderby t.Job_Card_ID descending
                                                               select t.Job_Card_ID).First() + 1;

            jc.Job_Card_ID          = job_key;
            jc.Job_Card_Date        = (DateTime)orderDetails["Date"];
            jc.Job_Card_Status_ID   = 1;
            jc.Job_Card_Priority_ID = 1;
            co.Job_Card_ID          = job_key;

            db.Client_Order.Add(co);
            db.Job_Card.Add(jc);
            db.SaveChanges();

            int detail_key = db.Job_Card_Detail.Count() == 0 ? 1 : (from t in db.Job_Card_Detail
                                                                    orderby t.Job_Card_Details_ID descending
                                                                    select t.Job_Card_Details_ID).First() + 1;

            int co_key = db.Client_Order_Detail.Count() == 0 ? 1 : (from t in db.Client_Order_Detail
                                                                    orderby t.Client_Order_Detail_ID descending
                                                                    select t.Client_Order_Detail_ID).First() + 1;

            foreach (JObject part in parts)
            {
                Client_Order_Detail cqd = new Client_Order_Detail();
                cqd.Part_Type_ID           = (int)part["Part_Type_ID"];
                cqd.Quantity               = (int)part["Quantity"];
                cqd.Quantity_Delivered     = 0;
                cqd.Part_Price             = (decimal)part["Part_Price"];
                cqd.Client_Discount_Rate   = (double)part["Client_Discount_Rate"];
                cqd.Client_Order_ID        = key;
                cqd.Client_Order_Detail_ID = co_key;
                co_key++;

                db.Client_Order_Detail.Add(cqd);

                Job_Card_Detail jcd = new Job_Card_Detail();
                jcd.Job_Card_Details_ID = detail_key;
                detail_key++;

                jcd.Part_Type_ID = (int)part["Part_Type_ID"];
                jcd.Job_Card_ID  = job_key;
                jcd.Non_Manual   = false;
                jcd.Quantity     = (int)part["Quantity"];

                db.Job_Card_Detail.Add(jcd);
                db.SaveChanges();

                //2. Handle child dependencies
                checkForChildren(jcd.Part_Type_ID, jcd.Quantity, job_key, "Ordering");

                generateUniqueParts(jcd.Quantity, jcd.Part_Type_ID, 0, detail_key - 1, "Ordering");
            }

            db.SaveChanges();

            if (todo == "email")
            {
                Client_Contact_Person_Detail cl = new Client_Contact_Person_Detail();
                cl = (from p in db.Client_Contact_Person_Detail
                      where p.Contact_ID == co.Contact_ID
                      select p).First();

                string to      = cl.Email_Address;
                string subject = "WME Order #" + key;

                String orderDate = co.Date.ToShortDateString();
                string body      = "Walter Meano Engineering Order #" + key + "\nThe order was placed on " + orderDate + "\n\nItems on Order:\n";

                foreach (JObject part in parts)
                {
                    Part_Type pt      = new Part_Type();
                    int       part_id = (int)part["Part_Type_ID"];
                    pt = (from p in db.Part_Type
                          where p.Part_Type_ID == part_id
                          select p).First();

                    body += pt.Abbreviation + " - " + pt.Name + "\t\tx" + (int)part["Quantity"] + "\tR " + (decimal)part["Part_Price"] + " per unit\n";
                }

                Email.SendEmail(to, subject, body);
            }

            return("true|Order #" + key + " has been placed.");

            /*         var return_message = sendSms((int)orderDetails["Contact_ID"], key);
             *
             *       return return_message;
             *   }
             *   catch(Exception e)
             *   {
             *       ExceptionLog.LogException(e, "CustomerOrderController POST");
             *       return "false|An error has occured adding the Customer Order to the system.";
             *   }*/
        }