Esempio n. 1
0
        public CResult <bool> InsertDeviceType(WebDeviceType model)
        {
            LogHelper.Info(MethodBase.GetCurrentMethod().ToString());
            LogHelper.Info("model", model);

            if (string.IsNullOrEmpty(model.ProjectID))
            {
                return(new CResult <bool>(false, ErrorCode.ParameterError));
            }

            using (var context = new DeviceMgmtEntities())
            {
                if (context.Project.Any(t => t.IsValid && t.ID == model.ProjectID) == false)
                {
                    return(new CResult <bool>(false, ErrorCode.ProjectNotExist));
                }

                if (context.DeviceType.Any(t => t.Name.ToUpper() == model.Name.ToUpper() && t.ProjectID == model.ProjectID && t.IsValid))
                {
                    return(new CResult <bool>(false, ErrorCode.DeviceTypeNameIsExist));
                }

                var maintainItemIDs = model.MaintainItems.Select(t => t.ID).ToList();
                if (maintainItemIDs.Count > 0)
                {
                    if (context.MaintainItem.Count(t => maintainItemIDs.Contains(t.ID) && t.IsValid && t.ProjectID == model.ProjectID) < maintainItemIDs.Count)
                    {
                        return(new CResult <bool>(false, ErrorCode.MaintainItemNotExist));
                    }
                }

                var entity = new DeviceType();
                entity.CreateDate   = DateTime.Now;
                entity.CreateUserID = model.CreateUserID;
                entity.ID           = Guid.NewGuid().ToString();
                entity.Name         = model.Name;
                entity.IsValid      = true;
                entity.Note         = model.Note;
                entity.ProjectID    = model.ProjectID;

                foreach (var item in model.MaintainItems)
                {
                    var relation = new DeviceTypeMaintainItemRel()
                    {
                        DeviceTypeID   = entity.ID,
                        MaintainItemID = item.ID
                    };

                    context.DeviceTypeMaintainItemRel.Add(relation);
                }

                context.DeviceType.Add(entity);

                return(context.Save());
            }
        }
Esempio n. 2
0
        public CResult <bool> UpdateDeviceType(WebDeviceType model)
        {
            LogHelper.Info(MethodBase.GetCurrentMethod().ToString());
            LogHelper.Info("model", model);

            if (string.IsNullOrEmpty(model.ID))
            {
                return(new CResult <bool>(false, ErrorCode.ParameterError));
            }

            using (var context = new DeviceMgmtEntities())
            {
                var entity = context.DeviceType.FirstOrDefault(t => t.ID == model.ID && t.IsValid);
                if (entity == null)
                {
                    return(new CResult <bool>(false, ErrorCode.DeviceTypeNotExist));
                }

                if (context.DeviceType.Any(t => t.Name.ToUpper() == model.Name.ToUpper() && t.ProjectID == entity.ProjectID && t.IsValid && t.ID != model.ID))
                {
                    return(new CResult <bool>(false, ErrorCode.DeviceTypeNameIsExist));
                }

                entity.Name = model.Name;
                entity.Note = model.Note;

                var maintainItemIDs = model.MaintainItems.Select(t => t.ID).ToList();
                if (maintainItemIDs.Count > 0)
                {
                    if (context.MaintainItem.Count(t => maintainItemIDs.Contains(t.ID) && t.IsValid && t.ProjectID == model.ProjectID) < maintainItemIDs.Count)
                    {
                        return(new CResult <bool>(false, ErrorCode.MaintainItemNotExist));
                    }
                }

                var oldRelations = context.DeviceTypeMaintainItemRel.Where(t => t.DeviceTypeID == entity.ID);

                var oldRelationItemIDs = oldRelations.Select(t => t.MaintainItemID);
                var newRelationItemIDs = model.MaintainItems.Select(t => t.ID).ToList();

                var needDeletes = oldRelations.Where(t => newRelationItemIDs.Contains(t.MaintainItemID) == false).ToList();
                var needAdd     = model.MaintainItems.Where(t => oldRelationItemIDs.Contains(t.ID) == false).ToList();

                foreach (var item in needDeletes)
                {
                    context.DeviceTypeMaintainItemRel.Remove(item);
                }

                foreach (var item in needAdd)
                {
                    var relation = new DeviceTypeMaintainItemRel()
                    {
                        DeviceTypeID   = entity.ID,
                        MaintainItemID = item.ID
                    };

                    context.DeviceTypeMaintainItemRel.Add(relation);
                }

                context.Entry(entity).State = EntityState.Modified;
                return(context.Save());
            }
        }