/// <summary>
        /// Saves or updates the entity without its children.
        /// </summary>
        ///
        /// <param name="entity">
        /// Entity to save or update.
        /// </param>
        ///
        /// <param name="options">
        /// Optional options.
        /// </param>
        ///
        /// <returns>
        /// The number of affected rows.
        /// </returns>
        private int Persist(ref VahapYigit.Test.Models.Translation entity, SaveOptions options = null)
        {
            if (entity.State != VahapYigit.Test.Models.EntityState.ToInsert &&
                entity.State != VahapYigit.Test.Models.EntityState.ToUpdate)
            {
                return(0);
            }

            IList <TranslationEnum> errors;

            if (!entity.IsValid(out errors))
            {
                throw new EntityValidationException(errors);
            }

            int rowCount = 0;

            using (var et = new ExecutionTracerService(tag: entity.State.ToString()))
            {
                if (options.CheckUniqueConstraints)
                {
                    IList <TranslationEnum> ucErrors   = new List <TranslationEnum>();
                    SearchOptions           searchOpts = new SearchOptions();

                    searchOpts.Clear();

                    if (entity.State == VahapYigit.Test.Models.EntityState.ToUpdate)
                    {
                        searchOpts.Filters.Add(VahapYigit.Test.Models.Translation.ColumnNames.Id, FilterOperator.Different, entity.Id);
                    }

                    searchOpts.Filters.Add(VahapYigit.Test.Models.Translation.ColumnNames.Key, FilterOperator.Equals, entity.Key);

                    if (this.HasResult(searchOpts))
                    {
                        ucErrors.Add(TranslationEnum.CrudTranslationKeyUniqueConstraint);
                    }

                    if (ucErrors.Count != 0)
                    {
                        throw new EntityValidationException(ucErrors);
                    }
                }

                var parameters = new Dictionary <string, object>();

                parameters.Add("@Translation_Id", entity.Id);
                parameters.Add("@Translation_Key", entity.Key);
                parameters.Add("@Translation_Value_EN", entity.Value["EN"]);

                var collection = base.ToEntityCollection("Translation_Save", parameters, withDeepMapping: false);
                if (!collection.IsNullOrEmpty())
                {
                    entity.Map(collection[0]);
                    rowCount = 1;
                }

                return(rowCount);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Saves or updates the entity without its children.
        /// </summary>
        ///
        /// <param name="entity">
        /// Entity to save or update.
        /// </param>
        ///
        /// <param name="options">
        /// Optional options.
        /// </param>
        ///
        /// <returns>
        /// The number of affected rows.
        /// </returns>
        private int Persist(ref VahapYigit.Test.Models.User entity, SaveOptions options = null)
        {
            if (entity.State != VahapYigit.Test.Models.EntityState.ToInsert &&
                entity.State != VahapYigit.Test.Models.EntityState.ToUpdate)
            {
                return(0);
            }

            IList <TranslationEnum> errors;

            if (!entity.IsValid(out errors))
            {
                throw new EntityValidationException(errors);
            }

            int rowCount = 0;

            using (var et = new ExecutionTracerService(tag: entity.State.ToString()))
            {
                if (options.CheckUniqueConstraints)
                {
                    IList <TranslationEnum> ucErrors   = new List <TranslationEnum>();
                    SearchOptions           searchOpts = new SearchOptions();

                    searchOpts.Clear();

                    if (entity.State == VahapYigit.Test.Models.EntityState.ToUpdate)
                    {
                        searchOpts.Filters.Add(VahapYigit.Test.Models.User.ColumnNames.Id, FilterOperator.Different, entity.Id);
                    }

                    searchOpts.Filters.Add(VahapYigit.Test.Models.User.ColumnNames.Email, FilterOperator.Equals, entity.Email);

                    if (this.HasResult(searchOpts))
                    {
                        ucErrors.Add(TranslationEnum.CrudUserEmailUniqueConstraint);
                    }

                    searchOpts.Clear();

                    if (entity.State == VahapYigit.Test.Models.EntityState.ToUpdate)
                    {
                        searchOpts.Filters.Add(VahapYigit.Test.Models.User.ColumnNames.Id, FilterOperator.Different, entity.Id);
                    }

                    searchOpts.Filters.Add(VahapYigit.Test.Models.User.ColumnNames.Username, FilterOperator.Equals, entity.Username);

                    if (this.HasResult(searchOpts))
                    {
                        ucErrors.Add(TranslationEnum.CrudUserUsernameUniqueConstraint);
                    }

                    if (ucErrors.Count != 0)
                    {
                        throw new EntityValidationException(ucErrors);
                    }
                }

                var parameters = new Dictionary <string, object>();

                parameters.Add("@User_Id", entity.Id);
                parameters.Add("@User_Username", entity.Username);
                parameters.Add("@User_Password", entity.Password);
                parameters.Add("@User_Email", entity.Email);
                parameters.Add("@User_PasswordQuestion", entity.PasswordQuestion);
                parameters.Add("@User_PasswordResponse", entity.PasswordResponse);
                parameters.Add("@User_RegistrationDate", entity.RegistrationDate);
                parameters.Add("@User_LastConnectionDate", entity.LastConnectionDate);
                parameters.Add("@User_Culture", entity.Culture);

                var collection = base.ToEntityCollection("User_Save", parameters, withDeepMapping: false);
                if (!collection.IsNullOrEmpty())
                {
                    entity.Map(collection[0]);
                    rowCount = 1;
                }

                return(rowCount);
            }
        }