public ActionResult Add(string out_in_come, string data, string department_id, string reason)
        {
            QuangHanhManufacturingEntities DBContext = new QuangHanhManufacturingEntities();

            using (DbContextTransaction transaction = DBContext.Database.BeginTransaction())
            {
                try
                {
                    Department department = DBContext.Departments.Find(department_id);
                    if (department == null)
                    {
                        return(Json(new { success = false, message = "Phòng ban không tồn tại" }));
                    }

                    Documentary documentary = new Documentary
                    {
                        documentary_type = 8,
                        date_created     = DateTime.Now,
                        person_created   = Session["Name"] + ""
                    };
                    documentary.reason             = reason;
                    documentary.out_income         = out_in_come;
                    documentary.department_id_to   = department_id;
                    documentary.documentary_status = 1;
                    DBContext.Documentaries.Add(documentary);
                    DBContext.SaveChanges();
                    JArray json = JArray.Parse(data);
                    foreach (JObject item in json)
                    {
                        string room_id            = item["id"].ToString();
                        string repair_requirement = item["repair_requirement"].ToString();

                        CameraRepairDetail drd = new CameraRepairDetail
                        {
                            documentary_camera_repair_status = 0,
                            documentary_id         = documentary.documentary_id,
                            room_id                = room_id,
                            broken_camera_quantity = (int)item["broken_camera_quantity"],
                            repair_requirement     = repair_requirement,
                            note          = (string)item["note"],
                            department_id = (string)item["department_id"]
                        };
                        DBContext.CameraRepairDetails.Add(drd);

                        JArray vattu = (JArray)item.SelectToken("vattu");
                        foreach (JObject jObject in vattu)
                        {
                            string       supply_id = (string)jObject["supply_id"];
                            int          quantity  = (int)jObject["quantity"];
                            RepairCamera sde       = new RepairCamera
                            {
                                documentary_id = documentary.documentary_id,
                                room_id        = room_id,
                                supply_id      = supply_id,
                                quantity_plan  = quantity
                            };
                            DBContext.RepairCameras.Add(sde);
                        }
                    }
                    DBContext.SaveChanges();
                    transaction.Commit();
                    return(Json(new { success = true }));
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(Json(new { success = false, message = "Có lỗi xảy ra" }));
                }
            }
        }
        public ActionResult AddSupply(string list, int documentary_id, string room_id)
        {
            using (DbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    CameraRepairDetail detail = db.CameraRepairDetails
                                                .Where(x => x.room_id == room_id && x.documentary_id == documentary_id && x.documentary_camera_repair_status == 0).FirstOrDefault();
                    if (detail == null)
                    {
                        return(Json(new { success = false, message = "Không thể chỉnh sửa quyết định đã xử lý" }));
                    }

                    JObject json = JObject.Parse(list);
                    JArray  arr  = (JArray)json.SelectToken("list");

                    List <string> supply_ids = arr.Select(x => x["supply_id"].ToString()).ToList();
                    if (db.Supplies.Where(x => supply_ids.Contains(x.supply_id)).Count() != supply_ids.Count)
                    {
                        return(Json(new { success = false, message = "Mã vật tư không tồn tại" }));
                    }

                    foreach (JObject item in arr)
                    {
                        string       supply_id = (string)item["supply_id"];
                        RepairCamera temp      = db.RepairCameras
                                                 .Where(a => a.documentary_id == documentary_id && a.room_id.Equals(room_id) && a.supply_id == supply_id).FirstOrDefault();

                        if (temp == null)
                        {
                            temp = new RepairCamera
                            {
                                documentary_id = documentary_id,
                                room_id        = room_id,
                                quantity_in    = (int)item["quantity_in"],
                                quantity_out   = (int)item["quantity_out"],
                                quantity_plan  = (int)item["quantity_plan"],
                                quantity_used  = (int)item["quantity_used"],
                                supply_status  = (string)item["supplyStatus"],
                                supply_id      = (string)item["supply_id"]
                            };
                            db.RepairCameras.Add(temp);
                        }
                        else
                        {
                            temp.quantity_in   = (int)item["quantity_in"];
                            temp.quantity_out  = item["quantity_out"] == null ? 0 : (int)item["quantity_out"];
                            temp.quantity_used = item["quantity_used"] == null ? 0 : (int)item["quantity_used"];
                            temp.supply_status = (string)item["supplyStatus"];
                        }
                        db.SaveChanges();
                    }
                    db.SaveChanges();
                    transaction.Commit();
                    return(Json(new { success = true, message = "Cập nhật thành công" }));
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(Json(new { success = false, message = "Có lỗi xảy ra" }));
                }
            }
        }