Example #1
0
        /// <summary>
        /// Update action core method.
        /// </summary>
        /// <param name="propertyDelegate">Get property delegate.</param>
        /// <param name="entity">Entity to edit or create.</param>
        /// <returns>True if success, otherwise is false.</returns>
        public async Task <bool> UpdateCore(UpdatePropertyDelegate propertyDelegate, TEntity entity)
        {
            var properties = Metadata.EditProperties.ToArray();

            foreach (var property in properties)
            {
                await propertyDelegate(entity, property);
            }
            if (Controller.ViewBag.ErrorMessage != null)
            {
                return(false);
            }
            ValidationContext validationContext = new ValidationContext(entity, new EntityDescriptorContext(EntityBuilder), null);
            var validateResult = entity.Validate(validationContext);

            if (validateResult.Count() != 0)
            {
                Controller.ViewBag.ErrorMessage = string.Join("\r\n", validateResult.Select(t => t.ErrorMessage));
                return(false);
            }
            bool result;

            if (entity.Index == Guid.Empty)
            {
                result = await EntityContext.AddAsync(entity);
            }
            else
            {
                result = await EntityContext.EditAsync(entity);
            }
            return(result);
        }
Example #2
0
        /// <summary>IPC通信.Model</summary>
        /// <param name="update">ViewModelプロパティ更新</param>
        /// <param name="updateResults">結果表示</param>
        public ClientModel(UpdatePropertyDelegate update, UpdateResultsDelegate updateResults)
        {
            _Update        = update;
            _UpdateResults = updateResults;

            _Server = new ChannelFactory <IExecute>(
                new NetNamedPipeBinding(),
                new EndpointAddress(Service.GetAddress())
                ).CreateChannel();
        }
Example #3
0
        /// <summary>
        /// Get update action result.
        /// </summary>
        /// <param name="coreDelegate">Get update core delegate.</param>
        /// <param name="propertyDelegate">Get property delegate.</param>
        /// <param name="id">Entity id.</param>
        /// <returns></returns>
        public async Task <ActionResult> GetUpdateAction(UpdateCoreDelegate coreDelegate, UpdatePropertyDelegate propertyDelegate, Guid id)
        {
            TEntity entity;

            if (id == Guid.Empty)
            {
                if (!EntityContext.Addable())
                {
                    return(new HttpUnauthorizedResult());
                }
                if (Metadata.AddRoles.Count() > 0 &&
                    !(Metadata.AuthenticationRequiredMode == AuthenticationRequiredMode.All ?
                      Metadata.AddRoles.All(r => Controller.User.IsInRole(r)) :
                      Metadata.AddRoles.Any(r => Controller.User.IsInRole(r))))
                {
                    return(new HttpUnauthorizedResult());
                }
                entity = EntityContext.Create();
            }
            else
            {
                if (!EntityContext.Editable())
                {
                    return(new HttpUnauthorizedResult());
                }
                if (Metadata.EditRoles.Count() > 0 &&
                    !(Metadata.AuthenticationRequiredMode == AuthenticationRequiredMode.All ?
                      Metadata.EditRoles.All(r => Controller.User.IsInRole(r)) :
                      Metadata.EditRoles.Any(r => Controller.User.IsInRole(r))))
                {
                    return(new HttpUnauthorizedResult());
                }
                entity = EntityContext.GetEntity(id);
                if (entity == null)
                {
                    return(new HttpStatusCodeResult(404));
                }
            }
            var properties = Metadata.Properties.Where(t => !t.IsHiddenOnEdit).ToArray();

            if (!await coreDelegate(propertyDelegate, entity))
            {
                Controller.Response.StatusCode = 400;
                //Important!!!
                Controller.Response.TrySkipIisCustomErrors = true;
                if (Controller.ViewBag.ErrorMessage == null)
                {
                    return(GetContent("未知"));
                }
                else
                {
                    return(GetContent(Controller.ViewBag.ErrorMessage));
                }
            }
            return(GetContent(entity.Index.ToString()));
        }
Example #4
0
        /// <summary>解放処理</summary>
        public void Dispose()
        {
            _UpdateProperty = null;

            Close();
        }
Example #5
0
 /// <summary>サーバModel</summary>
 /// <param name="updateProperty">プロパティ更新メソッド</param>
 /// <param name="updateEnabled">ボタン操作許可プロパティ更新デリゲート</param>
 public ServerModel(UpdatePropertyDelegate updateProperty, UpdateEnabledDelegate updateEnabled)
 {
     _UpdateProperty = updateProperty;
     _UpdateEnabled  = updateEnabled;
 }