Exemplo n.º 1
0
        private int _saveContact()
        {
            int res = Validator.ValidateContact(Contact);

            if (res != 0)
            {
                return(res);
            }
            else
            {
                //Beginn Speicher-Vorgang...
                try
                {
                    var insertContactParameter = DBQuery.CreateSqlParameterSaveContact(Contact);
                    var cnt = DatabaseHelper.InsertDatabase(insertContactParameter);

                    var getLastContactParamter = DBQuery.CreateSqlParameterLastContact();
                    var id = DatabaseHelper.CheckDatabase(getLastContactParamter);

                    int contactId = 0;
                    int.TryParse(id.Rows[0][0].ToString(), out contactId);

                    var toInsert = new List <TitleModel>();
                    //Alle noch nicht in der Datenbank vorhandene Titel ermitteln
                    var newTitles = Contact.TitelList.FindAll(x => x.Title_ID == 0);
                    foreach (var entry in newTitles)
                    {
                        //Insert neuen Titel
                        var insertTitleCommand = DBQuery.CreateSqlParameterTitle(entry.Title, true);
                        int resCount           = DatabaseHelper.InsertDatabase(insertTitleCommand);

                        //Hinzugefügten Titel aus der Datenbank ermitteln
                        var selectCommand = DBQuery.CreateSqlParameterTitle(entry.Title, false);
                        var currentTitles = DatabaseHelper.CheckDatabase(selectCommand);

                        //Neu hinzugfügten Titel in Liste schreiben
                        toInsert.Add(new TitleModel
                        {
                            Title_ID = int.Parse(currentTitles.Rows[0][0].ToString()),
                            Title    = currentTitles.Rows[0][1].ToString()
                        });
                    }

                    //Alle bereits in der Datenbank vorhandenen Titel ermitteln
                    var existingTitles = Contact.TitelList.FindAll(x => x.Title_ID != 0);
                    toInsert.AddRange(existingTitles);

                    //Über alle dem Kontakt zugeordneten Titel loopen und diese in die Datenbank schreiben
                    foreach (var entry in toInsert)
                    {
                        var insertTitleContactParameter = DBQuery.CreateSqlParameterSaveTitle(contactId, entry.Title_ID);
                        var resTitleContact             = DatabaseHelper.InsertDatabase(insertTitleContactParameter);
                    }
                }
                catch (Exception ex)
                {
                    //Fehler während der Verarbeitung
                    return(10);
                }

                return(11);
            }
        }