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

                if (!isNull(type))
                {
                    SWDAssessment record = new SWDAssessment();
                    record.project_id = int.Parse(project_id);
                    record.assessment_type_id = db.AssessmentTypes.Single(a => a.type.Equals(type)).assessment_type_id;
                    record.contact_id = db.Contacts.Single(a => a.name.Equals("Test Guy")).contact_id;
                    record.action = "";
                    record.booked_hours = "0";
                    record.hours = "0";
                    db.SWDAssessments.InsertOnSubmit(record);
                    db.SubmitChanges();

                    doChangeLogging(type, username, permission, project_id, db);

                    return new PagedData(new { record.swd_assessment_id, record.Contact.name });
                }

                return new PagedData("AddSWDAssessment.ashx requires a type");
            }

            return new PagedData("AddSWDAssessment.ashx requires a project_id");
        }
 public void doChangeLogging(string type, string username, string permission, string project_id, CookDBDataContext db, SWDAssessment 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 = "TLS";
         newLog.user_name = username;
         string action = (record.action == null || record.action == "") ? "(empty)" : record.action;
         string billed = (record.hours == null || record.hours == "") ? "(empty)" : record.hours;
         string booked = (record.booked_hours == null || record.booked_hours == "") ? "(empty)" : record.booked_hours;
         newLog.description = "Existing record deleted from " + record.AssessmentType.type + ": Name: " + record.Contact.name + 
             "; Notes: " + action + "; Billed Hours: " + billed + "; Booked Hours: " + booked + ".";
         db.ChangeLogs.InsertOnSubmit(newLog);
         db.SubmitChanges();
     //}
 }
		private void detach_SWDAssessments(SWDAssessment entity)
		{
			this.SendPropertyChanging();
			entity.ProjectInformation = null;
		}
 partial void DeleteSWDAssessment(SWDAssessment instance);
 partial void UpdateSWDAssessment(SWDAssessment instance);
 partial void InsertSWDAssessment(SWDAssessment instance);
		private void detach_SWDAssessments(SWDAssessment entity)
		{
			this.SendPropertyChanging();
			entity.Contact = null;
		}
		private void attach_SWDAssessments(SWDAssessment entity)
		{
			this.SendPropertyChanging();
			entity.AssessmentType = this;
		}
        public override PagedData ProcessRequest(HttpContext context, CookDBDataContext db)
        {
            IQueryable<SWDAssessment> q = db.SWDAssessments;

            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) && (
                                a.AssessmentType.type == "Design/Documentation" ||
                                a.AssessmentType.type == "Coding" ||
                                a.AssessmentType.type == "Project Overhead" ||
                                a.AssessmentType.type == "MIS Other" ||
                                a.AssessmentType.type == "MIS" ||
                                a.AssessmentType.type == "Requirements Clarification" ||
                                a.AssessmentType.type == "QA" ||
                                a.AssessmentType.type == "Workflow" ||
                                a.AssessmentType.type == "Testing/Implementation" ||
                                a.AssessmentType.type == "UAT Support"
                                ));
                            return new PagedData(q.Select(a => new
                            {
                                a.project_id,
                                a.Contact.name,
                                a.AssessmentType.type,
                                a.hours,
                                a.action,
                                a.requested_start_date,
                                a.requested_complete,
                                a.scheduled_start_date,
                                a.scheduled_complete,
                                a.actual_complete,
                                a.booked_hours,
                                a.swd_assessment_id
                            }));
                        }
                        else
                        {
                            return new PagedData("GetSWDAssessment expects a project_id");
                        }
                    }
                case "POST":
                    {
                        if (blob["rows"].GetType() == typeof(JObject))
                        {
                            JObject obj = (JObject)blob["rows"];
                            SWDAssessment record = new SWDAssessment();

                            record.project_id = int.Parse(filter);
                            record.Contact = db.Contacts.Single(a => a.name.Equals("Test Guy"));
                            record.Contact.name = "Test Guy";
                            record.action = "";
                            record.hours = "";
                            record.booked_hours = "";
                            record.requested_start_date = "";
                            record.requested_complete = "";
                            record.scheduled_start_date = "";
                            record.scheduled_complete = "";
                            record.actual_complete = "";
                            try
                            {
                                record.assessment_type_id = db.AssessmentTypes.Single(a => a.type == (string)obj["type"]).assessment_type_id;
                            }
                            catch (Exception)
                            {
                                record.assessment_type_id = db.AssessmentTypes.Single(a => a.type == "Coding").assessment_type_id;
                            }
                            db.SWDAssessments.InsertOnSubmit(record);
                            db.SubmitChanges();

                            q = q.Where(a => a.project_id == int.Parse(filter) && a.swd_assessment_id == record.swd_assessment_id);

                            return new PagedData(q.Select(a => new
                            {
                                a.swd_assessment_id,
                                a.AssessmentType.type,
                                a.action,
                                a.Contact.name,
                                a.hours,
                                a.booked_hours,
                                a.requested_start_date,
                                a.requested_complete,
                                a.scheduled_start_date,
                                a.scheduled_complete,
                                a.actual_complete
                            }));
                        }
                        else
                        {
                            JArray objs = (JArray)blob["rows"];
                            List<SWDAssessment> list = new List<SWDAssessment>();
                            for (int j = 0; j < objs.Count; j++)
                            {
                                SWDAssessment record = new SWDAssessment();

                                record.project_id = int.Parse(filter);
                                record.Contact = db.Contacts.Single(a => a.name.Equals("Test Guy"));
                                record.Contact.name = "Test Guy";
                                record.action = "";
                                record.hours = "";
                                record.booked_hours = "";
                                record.requested_start_date = "";
                                record.requested_complete = "";
                                record.scheduled_start_date = "";
                                record.scheduled_complete = "";
                                record.actual_complete = "";
                                try
                                {
                                    record.assessment_type_id = db.AssessmentTypes.Single(a => a.type == (string)objs["type"]).assessment_type_id;
                                }
                                catch (Exception)
                                {
                                    record.assessment_type_id = db.AssessmentTypes.Single(a => a.type == "Coding").assessment_type_id;
                                }

                                db.SWDAssessments.InsertOnSubmit(record);
                                db.SubmitChanges();
                                list.Add(record);
                            }
                            return new PagedData(list);
                        }
                    }
                case "PUT":
                    {
                        if (blob["rows"].GetType() == typeof(JObject))
                        {
                            JObject obj = (JObject)blob["rows"];
                            SWDAssessment record = db.SWDAssessments.Single(a => a.swd_assessment_id.Equals((int)obj["swd_assessment_id"]));
                            try
                            {
                                record.Contact = db.Contacts.Single(a => a.name.Equals((string)obj["name"]));
                            }
                            catch (Exception)
                            {
                                record.Contact = db.Contacts.Single(a => a.name.Equals("Test Guy"));
                            }
                            record.action = (string)obj["action"];
                            record.hours = (string)obj["hours"];
                            record.booked_hours = (string)obj["booked_hours"];
                            record.requested_start_date = obj["requested_start_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["requested_start_date"]) : ((string)obj["requested_start_date"] == null ? "" : (string)obj["requested_start_date"]);
                            record.requested_complete = obj["requested_complete"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["requested_complete"]) : ((string)obj["requested_complete"] == null ? "" : (string)obj["requested_complete"]);
                            record.scheduled_start_date = obj["scheduled_start_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["scheduled_start_date"]) : ((string)obj["scheduled_start_date"] == null ? "" : (string)obj["scheduled_start_date"]);
                            record.scheduled_complete = obj["scheduled_complete"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["scheduled_complete"]) : ((string)obj["scheduled_complete"] == null ? "" : (string)obj["scheduled_complete"]);
                            record.actual_complete = obj["actual_complete"].ToString().Contains("T00:00:00") ? convertToProperDate((string)obj["actual_complete"]) : ((string)obj["actual_complete"] == null ? "" : (string)obj["actual_complete"]);
                            db.SubmitChanges();

                            q = q.Where(a => a.project_id == int.Parse(filter) && a.swd_assessment_id == record.swd_assessment_id);

                            return new PagedData(q.Select(a => new
                            {
                                a.swd_assessment_id,
                                a.AssessmentType.type,
                                a.action,
                                a.Contact.name,
                                a.hours,
                                a.booked_hours,
                                a.requested_start_date,
                                a.requested_complete,
                                a.scheduled_start_date,
                                a.scheduled_complete,
                                a.actual_complete
                            }));
                        }
                        else
                        {
                            JArray objs = (JArray)blob["rows"];
                            List<SWDAssessment> list = new List<SWDAssessment>();
                            for (int j = 0; j < objs.Count; j++)
                            {
                                SWDAssessment record = db.SWDAssessments.Single(a => a.swd_assessment_id.Equals((int)objs["swd_assessment_id"]));
                                try
                                {
                                    record.Contact = db.Contacts.Single(a => a.name.Equals((string)objs["name"]));
                                }
                                catch (Exception)
                                {
                                    record.Contact = db.Contacts.Single(a => a.name.Equals("Test Guy"));
                                }
                                record.action = (string)objs["action"];
                                record.hours = (string)objs["hours"];
                                record.booked_hours = (string)objs["booked_hours"];
                                record.requested_start_date = objs["requested_start_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["requested_start_date"]) : ((string)objs["requested_start_date"] == null ? "" : (string)objs["requested_start_date"]);
                                record.requested_complete = objs["requested_complete"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["requested_complete"]) : ((string)objs["requested_complete"] == null ? "" : (string)objs["requested_complete"]);
                                record.scheduled_start_date = objs["scheduled_start_date"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["scheduled_start_date"]) : ((string)objs["scheduled_start_date"] == null ? "" : (string)objs["scheduled_start_date"]);
                                record.scheduled_complete = objs["scheduled_complete"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["scheduled_complete"]) : ((string)objs["scheduled_complete"] == null ? "" : (string)objs["scheduled_complete"]);
                                record.actual_complete = objs["actual_complete"].ToString().Contains("T00:00:00") ? convertToProperDate((string)objs["actual_complete"]) : ((string)objs["actual_complete"] == null ? "" : (string)objs["actual_complete"]);
                                db.SubmitChanges();
                                list.Add(record);
                            }
                            return new PagedData(list);
                        }
                    }
                case "DELETE":
                    {
                        if (blob["rows"].GetType() == typeof(JObject))
                        {
                            JObject obj = (JObject)blob["rows"];
                            SWDAssessment record = db.SWDAssessments.Single(a => a.swd_assessment_id.Equals((int)obj["swd_assessment_id"]));
                            db.SWDAssessments.DeleteOnSubmit(record);
                            db.SubmitChanges();
                            return new PagedData("SWD Assessment Rec Deleted");
                        }
                        else
                        {
                            JArray objs = (JArray)blob["rows"];
                            List<SWDAssessment> list = new List<SWDAssessment>();
                            for (int j = 0; j < objs.Count; j++)
                            {
                                JObject obj = (JObject)blob["rows"];
                                SWDAssessment record = db.SWDAssessments.Single(a => a.swd_assessment_id.Equals((int)obj["swd_assessment_id"]));
                                db.SWDAssessments.DeleteOnSubmit(record);
                                db.SubmitChanges();
                            }
                            return new PagedData("SWD Assessment Recs Deleted");
                        }
                    }
                default:
                    return new PagedData("Error: Unsupported Http Request:  " + context.Request.RequestType + " not recognized", false);
            }
        }
        //smm (added assessmentID to the parameters)
        public SWDAssessment processProjectContact(string contactNameBlob, string assessmentType, CookDBDataContext db, int project_id, string actionBlob, int assessmentID)
        {//this sets the name/action/assessment_type_id
            //ah 1-30-13 removed the parsing of action within contact name due to contacts now having parse the action out of the name, if it exists
            name = contactNameBlob;
            name = name.Trim();
            action = "";

            //check the newly added Notes field for an action there. If there is one present, overwrite the currently saved action
            if (actionBlob != null && actionBlob != "")
            {
                action = actionBlob.Trim();
            }

            //check for null name
            if (db.Contacts.Count(a => a.name.Equals(name)) > 0)
            {
                //get corresponding id of contact from contacts table
                contactNameId = db.Contacts.Single(a => a.name.Equals(name)).contact_id;

                //get assessment type corresponding with type passed in
                //*** smm (no longer needed since assessmentType is assigned in AddSWDAssessment.ashx) ***
                //assessmentTypeId = db.AssessmentTypes.Single(a => a.type.Equals(assessmentType)).assessment_type_id;

                //now add a new record with the name/action/assessment type
                SWDAssessment newRecord = db.SWDAssessments.Single(a => a.swd_assessment_id.Equals(assessmentID));  //(smm) new SWDAssessment();
                newRecord.contact_id = contactNameId;
                //newRecord.project_id = project_id;  (smm - not needed)
                if (action != "")
                {
                    newRecord.action = action;
                }
                //newRecord.assessment_type_id = assessmentTypeId;  (smm - not needed)
                return newRecord;
            }
            else
            {
                SWDAssessment newRecord = new SWDAssessment();
                return newRecord;
            }
        }