Example #1
0
 public Task <IActionResult> CreateAsync([FromBody] FieldsValueByUserFlow fieldsValueByUserFlow)
 {
     return(ExceptionBehaviorAsync
            (
                async() => ResultApi(await RepoBusinessRules.CreateAsync(fieldsValueByUserFlow).ConfigureAwait(false))
            ));
 }
Example #2
0
        /// <summary>
        /// CreateAsync
        /// </summary>
        /// <param name="fieldsValueByUserFlow"></param>
        /// <returns>Is Create</returns>
        public Task <bool> CreateAsync(FieldsValueByUserFlow fieldsValueByUserFlow)
        {
            var fieldsByUserFlow = SearchAsyncById(fieldsValueByUserFlow.IdFlow, fieldsValueByUserFlow.IdUser);

            if (fieldsByUserFlow.Result == null)
            {
                ThrowExceptionFlowByUser();
            }
            if (!CheckContainsAllFields(fieldsValueByUserFlow, fieldsByUserFlow.Result))
            {
                ThrowExceptionCheckContainsAllFieldr();
            }
            if (!ValidType(fieldsValueByUserFlow))
            {
                ThrowExceptionCheckValueTypeByField();
            }

            if (!SaveFieldValueByUser(fieldsValueByUserFlow))
            {
                return(Task.FromResult
                       (
                           false
                       ));
            }
            return(Task.FromResult
                   (
                       true
                   ));
        }
Example #3
0
        /// <summary>
        /// Valid Type
        /// </summary>
        /// <param name="fieldsValueByUserFlow">fields Value By User Flow</param>
        /// <returns>Is Valid Type</returns>
        private bool ValidType(FieldsValueByUserFlow fieldsValueByUserFlow)
        {
            var result          = true;
            var fieldConnection = new Fields(this.RepositoryContext);

            foreach (FieldsValue fieldsValue in fieldsValueByUserFlow.fieldsValue)
            {
                var field = fieldConnection.SearchAsync(x => x.Id.Equals(fieldsValue.Id));
                if (field.Result == null)
                {
                    ThrowExceptionField();
                }

                var strategy = new ValidationTypeFielStrategy(BuilderType.GetStratey(GetTypeField.GetTypeById(field.Result.IdTypeField ?? default)));
                if (!strategy.Validate(new TypeField()
                {
                    FieldValue = fieldsValue.Value
                }))
                {
                    result = false;
                    break;
                }
            }
            return(result);
        }
Example #4
0
 /// <summary>
 /// Get Fields By User
 /// </summary>
 /// <param name="fieldsValueByUserFlow">fields Value By User Flow</param>
 /// <param name="fieldsValue">fields Value</param>
 /// <returns></returns>
 private static Entities.FieldsByUser GetFieldsByUser(FieldsValueByUserFlow fieldsValueByUserFlow, FieldsValue fieldsValue)
 {
     return(new Entities.FieldsByUser()
     {
         IdUser = fieldsValueByUserFlow.IdUser,
         IdField = fieldsValue.Id,
         Value = fieldsValue.Value
     });
 }
Example #5
0
        /// <summary>
        /// SaveField Value ByUser
        /// </summary>
        /// <param name="fieldsValueByUserFlow">fields Value ByUser Flow</param>
        /// <returns>Is Save</returns>
        private bool SaveFieldValueByUser(FieldsValueByUserFlow fieldsValueByUserFlow)
        {
            var result       = true;
            var fieldsByUser = new FieldsByUser(this.RepositoryContext);

            foreach (FieldsValue fieldsValue in fieldsValueByUserFlow.fieldsValue)
            {
                var idFields = fieldsByUser.CreateAsync(GetFieldsByUser(fieldsValueByUserFlow, fieldsValue));
                if (idFields.Result == null)
                {
                    result = false;
                    break;
                }
            }
            return(result);
        }
Example #6
0
        /// <summary>
        /// Check Contains All Fields
        /// </summary>
        /// <param name="fieldsValueByUserFlow">fields Value By User Flow</param>
        /// <param name="result">result</param>
        /// <returns>Is Check</returns>
        private static bool CheckContainsAllFields(FieldsValueByUserFlow fieldsValueByUserFlow, Entities.Dto.FlowGeneral result)
        {
            var isValid = true;

            foreach (StepsGeneral step in result.StepsGeneral)
            {
                foreach (FieldGeneral field in step.FieldGeneral)
                {
                    var fieldFound = fieldsValueByUserFlow.fieldsValue.Where(x => x.Id.Equals(field.Id));
                    if (fieldFound.Count().Equals(0))
                    {
                        isValid = false;
                        break;
                    }
                }
                if (!isValid)
                {
                    break;
                }
            }
            return(isValid);
        }