/// <inheritdoc />
        public int CreateAblieferndeStelle(string bezeichnung, string kuerzel, List <int> tokenIdList, List <string> kontrollstelleList,
                                           string currentUserId)
        {
            if (kontrollstelleList == null)
            {
                kontrollstelleList = new List <string>();
            }

            const string query =
                "INSERT INTO AblieferndeStelle (Bezeichnung, Kuerzel, Kontrollstellen, CreatedBy, ModifiedBy) OUTPUT INSERTED.AblieferndeStelleId VALUES (@p1, @p2, @p3, (SELECT EmailAddress FROM ApplicationUser WHERE ID = @p4), (SELECT EmailAddress FROM ApplicationUser WHERE ID = @p4))";

            var parameterList = new List <SqlParameter>
            {
                new SqlParameter
                {
                    Value         = bezeichnung,
                    ParameterName = "p1",
                    SqlDbType     = SqlDbType.VarChar
                },
                new SqlParameter
                {
                    Value         = kuerzel,
                    ParameterName = "p2",
                    SqlDbType     = SqlDbType.VarChar
                },
                new SqlParameter
                {
                    Value         = string.Join(",", kontrollstelleList),
                    ParameterName = "p3",
                    SqlDbType     = SqlDbType.VarChar
                },
                new SqlParameter
                {
                    Value         = currentUserId,
                    ParameterName = "p4",
                    SqlDbType     = SqlDbType.NVarChar
                }
            };

            var result = DataAccessExtensions.CreateNewItem(connectionString, query, parameterList);

            var ablieferndeStelleId = Convert.ToInt32(result);

            if (tokenIdList == null)
            {
                return(ablieferndeStelleId);
            }

            // Alle Tokens zuordnen
            var queryInsertToken = GetQueryForCleanAndInsertTokens(ablieferndeStelleId, tokenIdList);

            DataAccessExtensions.ExecuteQuery(connectionString, queryInsertToken);

            return(ablieferndeStelleId);
        }
        /// <inheritdoc />
        public void UpdateAblieferndeStelle(int ablieferndeStelleId, string bezeichnung, string kuerzel, List <int> tokenIdList,
                                            List <string> kontrollstelleList, string currentUserId)
        {
            if (ablieferndeStelleId == 0)
            {
                return;
            }

            if (string.IsNullOrEmpty(bezeichnung) || string.IsNullOrEmpty(kuerzel))
            {
                return;
            }

            if (kontrollstelleList == null)
            {
                kontrollstelleList = new List <string>();
            }

            using (var cn = new SqlConnection(connectionString))
            {
                cn.Open();

                using (var cmd = cn.CreateCommand())
                {
                    cmd.CommandText +=
                        "UPDATE AblieferndeStelle SET Bezeichnung = @p1, Kuerzel = @p2, Kontrollstellen = @p3, ModifiedBy = (SELECT EmailAddress FROM ApplicationUser WHERE ID = @p4), ModifiedOn = sysdatetime() WHERE AblieferndeStelleId = @p5";
                    cmd.Parameters.Add(new SqlParameter
                    {
                        Value         = bezeichnung,
                        ParameterName = "p1",
                        SqlDbType     = SqlDbType.NVarChar
                    });
                    cmd.Parameters.Add(new SqlParameter
                    {
                        Value         = kuerzel,
                        ParameterName = "p2",
                        SqlDbType     = SqlDbType.VarChar
                    });
                    cmd.Parameters.Add(new SqlParameter
                    {
                        Value         = string.Join(",", kontrollstelleList),
                        ParameterName = "p3",
                        SqlDbType     = SqlDbType.NVarChar
                    });
                    cmd.Parameters.Add(new SqlParameter
                    {
                        Value         = currentUserId,
                        ParameterName = "p4",
                        SqlDbType     = SqlDbType.NVarChar
                    });
                    cmd.Parameters.Add(new SqlParameter
                    {
                        Value         = ablieferndeStelleId,
                        ParameterName = "p5",
                        SqlDbType     = SqlDbType.Int
                    });

                    cmd.ExecuteNonQuery();
                }
            }

            // Alle Tokens neu zuordnen
            var queryInsertToken = GetQueryForCleanAndInsertTokens(ablieferndeStelleId, tokenIdList);

            DataAccessExtensions.ExecuteQuery(connectionString, queryInsertToken);
        }