예제 #1
0
        //报修设备申请
        private void Device_Repair(object sender, RoutedEventArgs e)
        {
            if (moveGrid.Children != null)
            {
                moveGrid.Children.Clear();
            }
            RepairEquipment _RepairEquipment = DeviceMigrationsFactory.RepairEquipment;
            EquipmentClass  _Eclass          = new EquipmentClass();

            //Equipments _Repair = DeviceMigrationsFactory.Equipments;
            //EquipmentClass _Eclass = new EquipmentClass();
            // DataSet _OutSet = _Eclass.getWorkEquipment();
            DataSet _OutSet = _Eclass.getRepairEquipment();

            _RepairEquipment.page.ShowPages(_RepairEquipment.repair_Grid, _OutSet, BaseRequest.PAGE_SIZE);
            moveGrid.Children.Add(_RepairEquipment);
            _RepairEquipment.SetValue(Grid.RowProperty, 0);
            _RepairEquipment.SetValue(Grid.ColumnProperty, 0);
        }
        public ActionResult Add(string out_in_come, string data, string department_id_to, string reason)
        {
            JArray json = JArray.Parse(data);
            QuangHanhManufacturingEntities DBContext = new QuangHanhManufacturingEntities();

            using (DbContextTransaction transaction = DBContext.Database.BeginTransaction())
            {
                try
                {
                    Documentary documentary = new Documentary
                    {
                        documentary_type   = 1,
                        department_id_to   = department_id_to,
                        date_created       = DateTime.Now,
                        person_created     = Session["Name"] + "",
                        reason             = reason,
                        out_income         = out_in_come,
                        documentary_status = 1
                    };
                    DBContext.Documentaries.Add(documentary);
                    DBContext.SaveChanges();

                    // Vị trí của thiết bị con được lấy theo vị trí của thiết bị to
                    List <string> list = new List <string>();
                    foreach (JObject item in json)
                    {
                        list.Add(item["attachTo"].Type == JTokenType.Null ? item["equipmentId"].ToString() : item["attachTo"].ToString());
                    }

                    var dict = (from e in DBContext.Equipments
                                join d in DBContext.Departments on e.department_id equals d.department_id
                                where list.Contains(e.equipment_id)
                                select new
                    {
                        e.equipment_id,
                        d.department_id
                    })
                               .Select(x => new { x.equipment_id, x.department_id })
                               .AsEnumerable()
                               .ToDictionary(d => d.equipment_id, d => d.department_id);

                    foreach (JObject item in json)
                    {
                        DateTime finish_date_plan = DateTime.ParseExact((string)item["date"], "dd/MM/yyyy", null);
                        string   equipmentId      = item["equipmentId"].ToString();
                        string   attach_to        = item["attachTo"].Type == JTokenType.Null ? null : item["attachTo"].ToString();

                        RepairDetail drd = new RepairDetail
                        {
                            department_id_from      = attach_to == null ? dict[equipmentId] : dict[attach_to],
                            equipment_repair_status = 0,
                            repair_type             = item["type"].ToString(),
                            repair_reason           = item["reason"].ToString(),
                            finish_date_plan        = finish_date_plan,
                            documentary_id          = documentary.documentary_id,
                            equipment_id            = equipmentId,
                            attach_to  = attach_to,
                            is_visible = true,
                            quantity   = int.Parse(item["quantity"].ToString())
                        };
                        DBContext.RepairDetails.Add(drd);
                        DBContext.SaveChanges();
                        bool used = false;

                        JObject vattu = (JObject)item["supply"];
                        if (vattu != null)
                        {
                            foreach (var jObject in vattu)
                            {
                                RepairEquipment sde = new RepairEquipment
                                {
                                    documentary_repair_id = drd.documentary_repair_id,
                                    supply_id             = jObject.Key,
                                    quantity_plan         = int.Parse(jObject.Value.ToString()),
                                };
                                used = true;
                                DBContext.RepairEquipments.Add(sde);
                            }
                            DBContext.SaveChanges();
                        }

                        JObject thietbi = (JObject)item["equipment"];
                        if (thietbi != null)
                        {
                            foreach (var jObject in thietbi)
                            {
                                RepairEquipment sde = new RepairEquipment
                                {
                                    documentary_repair_id = drd.documentary_repair_id,
                                    equipment_id          = jObject.Key,
                                    quantity_plan         = int.Parse(jObject.Value.ToString()),
                                };
                                used = true;
                                DBContext.RepairEquipments.Add(sde);
                            }
                            DBContext.SaveChanges();
                        }

                        if (!used)
                        {
                            transaction.Rollback();
                            string message = "Thiết bị " + (attach_to == null ? (equipmentId + " chưa được chọn thiết bị con hoặc vật tư") : (attach_to + $" ({equipmentId}) chưa được chọn vật tư"));
                            return(Json(new { success = false, message = "Thiết bị chưa được chọn" }));
                        }
                    }

                    transaction.Commit();
                    return(Json(new { success = true }));
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(Json(new { success = false, message = "Có lỗi xảy ra" }));
                }
            }
        }