/// <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); }