Beispiel #1
0
    /// <summary>
    /// Send board data into the database.
    /// </summary>
    /// <param name="Boards"></param>
    /// <returns></returns>
    public static string ImportData()
    {
        string       _logPath = HttpContext.Current.Server.MapPath("") + @"\output\log.txt";
        List <Board> _boards  = ParseBoardData();

        // First, let's delete the data.
        DBCommand.Delete_Clear_Database();
        File.WriteAllText(_logPath, "");

        int           _imported = 0;
        List <string> _failed   = new List <string>();

        foreach (Board _boardInfo in _boards)
        {
            try {
                #region CREATE THE BOARD

                int _boardID = DBCommand.Board_Insert_New_Board_ReturnBoardID(
                    _boardInfo.id.ToString(),
                    _boardInfo.name.ToString(),
                    _boardInfo.desc.ToString(),
                    (!string.IsNullOrEmpty(_boardInfo.closed.ToString())) ? bool.Parse(_boardInfo.closed.ToString()) : false,
                    (_boardInfo.dateLastActivity != null) ? DateTime.Parse(_boardInfo.dateLastActivity.ToString()) : DateTime.Now,
                    (!string.IsNullOrEmpty(_boardInfo.invited.ToString())) ? bool.Parse(_boardInfo.invited.ToString()) : false,
                    (!string.IsNullOrEmpty(_boardInfo.starred.ToString())) ? bool.Parse(_boardInfo.starred.ToString()) : false,
                    _boardInfo.url.ToString(),
                    _boardInfo.prefs.backgroundImage.ToString(),
                    (_boardInfo.dateLastView != null) ? DateTime.Parse(_boardInfo.dateLastView.ToString()) : DateTime.Now);

                #endregion

                // Now, for that board, add lists etc.
                if (_boardID > 0)
                {
                    _imported += 1;

                    #region ADD THE MEMBERS, LISTS & CARDS

                    #region ADD BOARD MEMBERSHIPS

                    // First, let's add the ones from the board memberships.
                    foreach (Board.Membership _member in _boardInfo.memberships)
                    {
                        try {
                            int _memberID = DBCommand.Board_Insert_New_Member_ReturnMemberID(
                                _boardID,
                                _member.id.ToString(),
                                _member.idMember.ToString(),
                                _member.memberType.ToString(),
                                string.Empty,
                                string.Empty,
                                string.Empty);
                        } catch (Exception ex) {
                            File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to insert member." + Environment.NewLine +
                                               "--> Board: " + _boardID.ToString() + Environment.NewLine +
                                               "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                               "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine +
                                               "--> Member ID: " + _member.id.ToString() + Environment.NewLine + Environment.NewLine);
                        }
                    }

                    #endregion

                    // Now, let's go through the actions.
                    if (_boardInfo.Lists.Count > 0)
                    {
                        foreach (Board.List _list in _boardInfo.Lists)
                        {
                            int _listID = 0;

                            #region ADD LIST TO BOARD

                            try {
                                _listID = 0;
                                _listID = DBCommand.Board_Insert_List_ReturnListID(
                                    _boardID,
                                    _list.id.ToString(),
                                    bool.Parse(_list.closed.ToString()),
                                    _list.name.ToString());
                            } catch (Exception ex) {
                                File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to create board list." + Environment.NewLine +
                                                   "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                                   "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine + Environment.NewLine);
                            }

                            #endregion

                            if (_listID > 0 && _list.Cards.Count > 0)
                            {
                                foreach (Board.List.Card _card in _list.Cards)
                                {
                                    int _cardID = 0;

                                    #region INSERT CARD

                                    DateTime _startDate = new DateTime(1970, 01, 01);
                                    _startDate = _startDate.AddSeconds(int.Parse(_card.id.ToString().Substring(0, 8), System.Globalization.NumberStyles.HexNumber));

                                    try {
                                        // Clear card id
                                        _cardID = 0;
                                        _cardID = DBCommand.Board_Insert_Card_ReturnCardID(
                                            _listID,
                                            _boardID,
                                            _card.id.ToString(),
                                            bool.Parse(_card.closed.ToString()),
                                            _card.name.ToString(),
                                            _card.desc.ToString(),
                                            _card.url.ToString(),
                                            _startDate);

                                        #region ASSIGN LIST TO CARD

                                        if (_cardID > 0 && !string.IsNullOrEmpty(_card.idList.ToString()))
                                        {
                                            try {
                                                //Add this list as part of the card's history
                                                DBCommand.Board_Insert_Assign_Card_ToList_ReturnID(
                                                    _cardID,
                                                    _card.idList.ToString(),
                                                    string.Empty,
                                                    _startDate);
                                            } catch (Exception ex) {
                                                File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to assign card to list." + Environment.NewLine +
                                                                   "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                                                   "--> List ID: " + _card.idList.ToString() + Environment.NewLine +
                                                                   "--> Card ID: " + _cardID.ToString() + Environment.NewLine + Environment.NewLine);
                                            }
                                        }

                                        #endregion
                                    } catch (Exception ex) {
                                        File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to insert a card." + Environment.NewLine +
                                                           "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                                           "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine +
                                                           "--> List ID: " + _card.idList.ToString() + Environment.NewLine +
                                                           "--> Card ID: " + _cardID.ToString() + Environment.NewLine + Environment.NewLine);
                                    }

                                    #endregion

                                    if (_cardID > 0 && _card.Actions.Count > 0)
                                    {
                                        foreach (Board.List.Card.Action _action in _card.Actions)
                                        {
                                            #region ASSIGN CARD TO LIST (FROM ACTION)

                                            if (_action.data != null)
                                            {
                                                try {
                                                    if (_action.data.list != null)
                                                    {
                                                        //Add this list as part of the card's history
                                                        DBCommand.Board_Insert_Assign_Card_ToList_ReturnID(
                                                            _cardID,
                                                            _action.data.list.id.ToString(),
                                                            _action.idMemberCreator.ToString(),
                                                            DateTime.Parse(_action.date.ToString()));
                                                    }

                                                    if (_action.data.listAfter != null)
                                                    {
                                                        //Add this list as part of the card's history
                                                        DBCommand.Board_Insert_Assign_Card_ToList_ReturnID(
                                                            _cardID,
                                                            _action.data.listAfter.id.ToString(),
                                                            _action.idMemberCreator.ToString(),
                                                            DateTime.Parse(_action.date.ToString()));
                                                    }

                                                    if (_action.data.listBefore != null)
                                                    {
                                                        //Add this list as part of the card's history
                                                        DBCommand.Board_Insert_Assign_Card_ToList_ReturnID(
                                                            _cardID,
                                                            _action.data.listBefore.id.ToString(),
                                                            _action.idMemberCreator.ToString(),
                                                            DateTime.Parse(_action.date.ToString()));
                                                    }
                                                } catch (Exception ex) {
                                                    File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to assign card to list." + Environment.NewLine +
                                                                       "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                                                       "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine +
                                                                       "--> Card ID: " + _cardID.ToString() + Environment.NewLine + Environment.NewLine);
                                                }
                                            }

                                            #endregion

                                            #region INSERT ACTION

                                            try {
                                                // Associates the action with the card.
                                                DBCommand.Board_Insert_Card_Action_ReturnActionID(
                                                    _cardID,
                                                    _action.id.ToString(),
                                                    _action.idMemberCreator.ToString(),
                                                    _action.type.ToString(),
                                                    _action.data.text,
                                                    DateTime.Parse(_action.date.ToString()));
                                            } catch (Exception ex) {
                                                File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to insert action." + Environment.NewLine +
                                                                   "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                                                   "--> Action ID: " + _action.id.ToString() + Environment.NewLine +
                                                                   "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine +
                                                                   "--> Member ID: " + _action.idMemberCreator.ToString() + Environment.NewLine + Environment.NewLine);
                                            }

                                            #endregion

                                            #region UPDATE MEMBER INFORMATION FROM ACTION

                                            if (_action.memberCreator != null)
                                            {
                                                try {
                                                    int _actionMemberID = DBCommand.Board_Update_Member_ReturnMemberID(
                                                        _action.memberCreator.id.ToString(),
                                                        _action.memberCreator.fullName.ToString(),
                                                        _action.memberCreator.initials.ToString(),
                                                        _action.memberCreator.username.ToString());
                                                } catch (Exception ex) {
                                                    File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to update action member." + Environment.NewLine +
                                                                       "--> Board: " + _boardID.ToString() + Environment.NewLine +
                                                                       "--> Name: " + _action.memberCreator.fullName.ToString() + Environment.NewLine +
                                                                       "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                                                       "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine +
                                                                       "--> Member ID: " + _action.memberCreator.id.ToString() + Environment.NewLine + Environment.NewLine);
                                                }
                                            }

                                            #endregion
                                        }
                                    }
                                }
                            }
                        }
                    }

                    #endregion
                }
            } catch (Exception ex) {
                File.AppendAllText(_logPath, DateTime.Now.ToString(@"ddMMyyyy HH:mm:ss") + " ERROR: Failed to insert board." + Environment.NewLine +
                                   "--> Reason: " + ex.Message.ToString() + Environment.NewLine +
                                   "--> Trace: " + ex.StackTrace.ToString() + Environment.NewLine +
                                   "--> Dump: " + new JavaScriptSerializer().Serialize(_boardInfo) + Environment.NewLine + Environment.NewLine);
            }
        }

        string _message = _imported.ToString() + " of " + _boards.Count.ToString() + @" boards imported.";
        _message += @"<br /><a target=""_blank"" href=""/output/log.txt"">View log</a>";

        return(_message);
    }