public override PagedData ProcessRequest(HttpContext context, CookDBDataContext db)
        {
            string project_id = context.Request.Params.Get("project_id");
            if (!isNull(project_id))
            {
                string username = context.Request.Params.Get("user_name");
                string permission = context.Request.Params.Get("permission");

                HardwareRequirement record = new HardwareRequirement();
                record.project_id = int.Parse(project_id);
                record.description = "";
                record.cost_per_item = "";
                record.total_item_cost = "";
                record.target_order_date = "";
                record.target_delivery = "";
                record.actual_order_date = "";
                record.actual_delivery_date = "";
                db.HardwareRequirements.InsertOnSubmit(record);
                db.SubmitChanges();

                doChangeLogging(username, permission, project_id, db);

                return new PagedData(new { record.hardware_req_id });
            }

            return new PagedData("AddSystemsAssessment.ashx requires a project_id");
        }
 public void doChangeLogging(string type, string username, string permission, string project_id, CookDBDataContext db, HardwareRequirement record)
 {
     //if (permission != "PM")
     //{
         ChangeLog newLog = new ChangeLog();
         newLog.project_id = Convert.ToInt32(project_id);
         newLog.time = DateTime.Now.ToShortTimeString();
         newLog.date = DateTime.Now.ToShortDateString();
         newLog.tab = "Systems";
         newLog.user_name = username;
         string description = (record.description == null || record.description == "") ? "(empty)" : record.description;
         string costPerItem = (record.cost_per_item == null || record.cost_per_item == "") ? "(empty)" : record.cost_per_item;
         var quantity = (record.quantity == 0) ? 0 : record.quantity;
         string targetOrderDate = (record.target_order_date == null || record.target_order_date == "") ? "(empty)" : record.target_order_date;
         string targetDelivery = (record.target_delivery == null || record.target_delivery == "") ? "(empty)" : record.target_delivery;
         string actualOrderDate = (record.actual_order_date == null || record.actual_order_date == "") ? "(empty)" : record.actual_order_date;
         string actualDelivery = (record.actual_delivery_date == null || record.actual_delivery_date == "") ? "(empty)" : record.actual_delivery_date;
         newLog.description = "Existing record deleted from Hardware Requirements: Description: " + description +
             "; Cost Per Item: " + costPerItem + "; Quantity: " + quantity+ "; Target Order Date: " + targetOrderDate + "; Target Delivery" + targetDelivery + 
             "; Actual Order Date: " + actualOrderDate + "; Actual Delivery: " + actualDelivery + ".";
         db.ChangeLogs.InsertOnSubmit(newLog);
         db.SubmitChanges();
     //}
 }
		private void detach_HardwareRequirements(HardwareRequirement entity)
		{
			this.SendPropertyChanging();
			entity.ProjectInformation = null;
		}
 partial void DeleteHardwareRequirement(HardwareRequirement instance);
 partial void UpdateHardwareRequirement(HardwareRequirement instance);
 partial void InsertHardwareRequirement(HardwareRequirement instance);
        public override PagedData ProcessRequest(HttpContext context, CookDBDataContext db)
        {
            IQueryable<HardwareRequirement> q = db.HardwareRequirements;

            string username = context.Request.Params.Get("user_name");
            string filter = context.Request.Params.Get("project_id");

            System.IO.StreamReader reader = new System.IO.StreamReader(context.Request.InputStream, context.Request.ContentEncoding);
            var jsonSerializer = new JsonSerializer();
            JObject blob = (JObject)jsonSerializer.Deserialize(new JsonTextReader(new StringReader(reader.ReadToEnd())));
            string readOnly = context.Request.Params.Get("read_only");

            if (readOnly == "true" && context.Request.RequestType != "GET")
            {
                return new PagedData("Read Only");
            }
            switch (context.Request.RequestType)
            {
                case "GET":
                    {
                        if (!isNull(filter))
                        {
                            q = q.Where(a => a.project_id == int.Parse(filter));

                            return new PagedData(q.Select(a => new
                            {
                                a.hardware_req_id,
                                a.description,
                                a.cost_per_item,
                                a.quantity,
                                a.total_item_cost,
                                a.target_delivery,
                                a.target_order_date,
                                a.actual_delivery_date,
                                a.actual_order_date,
                                a.requirement_type,
                                a.number_of_sites
                            }));
                        }
                        else
                        {
                            return new PagedData("GetHardwareRequirements expects a project_id");
                        }
                    }
                case "POST":
                    {
                        if (blob["rows"].GetType() == typeof(JObject))
                        {
                            JObject obj = (JObject)blob["rows"];
                            HardwareRequirement record = new HardwareRequirement();

                            record.project_id = int.Parse(filter);
                            record.description = "";
                            record.cost_per_item = "";
                            record.quantity = 0;
                            record.total_item_cost = "";
                            record.target_order_date = "";
                            record.target_delivery = "";
                            record.actual_delivery_date = "";
                            record.actual_order_date = "";
                            record.number_of_sites = 0;
                            try
                            {
                                record.requirement_type = (string)obj["requirement_type"];
                            }
                            catch (Exception)
                            {
                                record.requirement_type = "One Time Charges";
                            }
                            db.HardwareRequirements.InsertOnSubmit(record);
                            db.SubmitChanges();

                            return new PagedData(record);
                        }
                        else
                        {
                            JArray objs = (JArray)blob["rows"];
                            List<HardwareRequirement> list = new List<HardwareRequirement>();
                            for (int j = 0; j < objs.Count; j++)
                            {
                                HardwareRequirement record = new HardwareRequirement();

                                record.project_id = int.Parse(filter);
                                record.description = "";
                                record.cost_per_item = "";
                                record.quantity = 0;
                                record.total_item_cost = "";
                                record.target_order_date = "";
                                record.target_delivery = "";
                                record.actual_delivery_date = "";
                                record.actual_order_date = "";
                                try
                                {
                                    record.requirement_type = (string)objs["requirement_type"];
                                }
                                catch (Exception)
                                {
                                    record.requirement_type = "One Time Charges";
                                }
                                record.number_of_sites = 0;

                                db.HardwareRequirements.InsertOnSubmit(record);
                                db.SubmitChanges();
                                list.Add(record);
                            }
                            return new PagedData(list);
                        }
                    }
                case "PUT":
                    {
                        if (blob["rows"].GetType() == typeof(JObject))
                        {
                            JObject obj = (JObject)blob["rows"];
                            HardwareRequirement record = db.HardwareRequirements.Single(a => a.hardware_req_id.Equals((int)obj["hardware_req_id"]));
                            record.description = (string)obj["description"];
                            record.cost_per_item = obj["cost_per_item"] == null ? "0" : (string)obj["cost_per_item"];
                            record.quantity = obj["quantity"] == null ? 0 : (int)obj["quantity"];
                            record.number_of_sites = obj["number_of_sites"] == null ? 0 : (int)obj["number_of_sites"];
                            try
                            {
                                record.total_item_cost = "$" + (record.quantity * double.Parse(record.cost_per_item) * record.number_of_sites);
                            }
                            catch (Exception)
                            {
                                record.total_item_cost = "";
                            }
                            record.target_order_date = obj["target_order_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["target_order_date"]) : ((string)obj["target_order_date"] == null ? "" : (string)obj["target_order_date"]);
                            record.target_delivery = obj["target_delivery"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["target_delivery"]) : ((string)obj["target_delivery"] == null ? "" : (string)obj["target_delivery"]);
                            record.actual_delivery_date = obj["actual_delivery_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["actual_delivery_date"]) : ((string)obj["actual_delivery_date"] == null ? "" : (string)obj["actual_delivery_date"]);
                            record.actual_order_date = obj["actual_order_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["actual_order_date"]) : ((string)obj["actual_order_date"] == null ? "" : (string)obj["actual_order_date"]);
                            try
                            {
                                record.requirement_type = (string)obj["requirement_type"];
                            }
                            catch (Exception)
                            {
                                record.requirement_type = "One Time Charges";
                            }
                            db.SubmitChanges();
                            return new PagedData(record);
                        }
                        else
                        {
                            JArray objs = (JArray)blob["rows"];
                            List<HardwareRequirement> list = new List<HardwareRequirement>();
                            for (int j = 0; j < objs.Count; j++)
                            {
                                HardwareRequirement record = db.HardwareRequirements.Single(a => a.hardware_req_id.Equals((int)objs["hardware_req_id"]));
                                record.description = (string)objs["description"];
                                record.cost_per_item = objs["cost_per_item"] == null ? "0" : (string)objs["cost_per_item"];
                                record.quantity = objs["quantity"] == null ? 0 : (int)objs["quantity"];
                                record.number_of_sites = objs["number_of_sites"] == null ? 0 : (int)objs["number_of_sites"];
                                try
                                {
                                    record.total_item_cost = "$" + (record.quantity * double.Parse(record.cost_per_item) * record.number_of_sites);
                                }
                                catch (Exception)
                                {
                                    record.total_item_cost = "";
                                }
                                record.target_order_date = objs["target_order_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["target_order_date"]) : ((string)objs["target_order_date"] == null ? "" : (string)objs["target_order_date"]);
                                record.target_delivery = objs["target_delivery"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["target_delivery"]) : ((string)objs["target_delivery"] == null ? "" : (string)objs["target_delivery"]);
                                record.actual_delivery_date = objs["actual_delivery_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["actual_delivery_date"]) : ((string)objs["actual_delivery_date"] == null ? "" : (string)objs["actual_delivery_date"]);
                                record.actual_order_date = objs["actual_order_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["actual_order_date"]) : ((string)objs["actual_order_date"] == null ? "" : (string)objs["actual_order_date"]);
                                try
                                {
                                    record.requirement_type = (string)objs["requirement_type"];
                                }
                                catch (Exception)
                                {
                                    record.requirement_type = "One Time Charges";
                                }
                                db.SubmitChanges();
                            }
                            return new PagedData(list);
                        }
                    }
                case "DELETE":
                    {
                        if (blob["rows"].GetType() == typeof(JObject))
                        {
                            JObject obj = (JObject)blob["rows"];
                            HardwareRequirement record = db.HardwareRequirements.Single(a => a.hardware_req_id.Equals((int)obj["hardware_req_id"]));
                            db.HardwareRequirements.DeleteOnSubmit(record);
                            db.SubmitChanges();
                            return new PagedData("Hardware Rec Deleted");
                        }
                        else
                        {
                            JArray objs = (JArray)blob["rows"];
                            List<HardwareRequirement> list = new List<HardwareRequirement>();
                            for (int j = 0; j < objs.Count; j++)
                            {
                                JObject obj = (JObject)blob["rows"];
                                HardwareRequirement record = db.HardwareRequirements.Single(a => a.hardware_req_id.Equals((int)obj["hardware_req_id"]));
                                db.HardwareRequirements.DeleteOnSubmit(record);
                                db.SubmitChanges();
                            }
                            return new PagedData("Hardware Recs Deleted");
                        }
                        
                    }
                default:
                    return new PagedData("Error: Unsupported Http Request:  " + context.Request.RequestType + " not recognized", false);
            }
        }