private Domain.Demon GetDemonFromDataGridViewRow(DataGridViewRow dgvr, bool canInsertRace) { Domain.Demon returnDemon = null; if (!String.IsNullOrEmpty(dgvr.Cells[(int)MyDataGridColumns.colId3].Value.ToString())) { // Selecting / updating demon MessageBox.Show("UPDATING fusions is not implemented. Please refresh window to reload data."); returnDemon = null; } else if (((FusionObject)dgvr.Cells[(int)MyDataGridColumns.colFusionObject].Value).FusionIsImpossible) { MessageBox.Show("UPDATING fusions from impossible to possible is not implemented. " + "Please refresh window to reload data."); returnDemon = null; } else { // Inserting new demon object nameValue = dgvr.Cells[(int)MyDataGridColumns.colName3].Value; if (nameValue != null) { returnDemon = GetDemonFromDataGridViewRowDemonColumn(dgvr); } else { object idValue = dgvr.Cells[(int)MyDataGridColumns.colId3].Value; object levelValue = dgvr.Cells[(int)MyDataGridColumns.colLevel3].Value; object raceValue = dgvr.Cells[(int)MyDataGridColumns.colRace3].Value; if (levelValue != null && nameValue != null && raceValue != null) { var actualDemonRace = _dbSession.CreateCriteria <Domain.Race>().List <Domain.Race>(). Where(x => x.Name == raceValue.ToString()).FirstOrDefault(); if (actualDemonRace == null && canInsertRace) { actualDemonRace = GlobalObjects.InsertRaceMaybe(raceValue.ToString()); } if (actualDemonRace != null) { returnDemon = new Domain.Demon(); returnDemon.Level = Convert.ToInt32(levelValue.ToString()); returnDemon.Name = (string)nameValue; returnDemon.Race = actualDemonRace; } } } } return(returnDemon); }
private Domain.Demon GetDemonFromDataGridViewRow(DataGridViewRow dgvr, bool canInsertRace) { Domain.Demon returnDemon = null; if (dgvr.Cells[(int)MyDataGridColumns.columnObject].Value != null) { // Selecting / updating demon returnDemon = (Domain.Demon)dgvr.Cells[(int)MyDataGridColumns.columnObject].Value; } else { // Inserting new demon object idValue = dgvr.Cells[(int)MyDataGridColumns.columnId].Value; object levelValue = dgvr.Cells[(int)MyDataGridColumns.columnLevel].Value; object nameValue = dgvr.Cells[(int)MyDataGridColumns.columnName].Value; object raceValue = dgvr.Cells[(int)MyDataGridColumns.columnRace].Value; if (levelValue != null && nameValue != null && raceValue != null) { var actualDemonRace = _dbSession.CreateCriteria <Domain.Race>().List <Domain.Race>(). Where(x => x.Name == raceValue.ToString()).FirstOrDefault(); if (actualDemonRace == null && canInsertRace) { actualDemonRace = GlobalObjects.InsertRaceMaybe(raceValue.ToString()); } if (actualDemonRace != null) { returnDemon = new Domain.Demon(); returnDemon.Level = Convert.ToInt32(levelValue.ToString()); returnDemon.Name = (string)nameValue; returnDemon.Race = actualDemonRace; } } } return(returnDemon); }
private void dgvFusions_CellValueChanged(object sender, DataGridViewCellEventArgs e) { List <Domain.Fusion> allFusions; if (_cellChanged) { string location = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name; _logger.OpenSection(location); _logger.Info("Called with row index " + e.RowIndex + ", column index = " + e.ColumnIndex); Domain.Race race1 = this.dgvFusions.Rows[0].Cells[e.ColumnIndex].Tag as Domain.Race; Domain.Race race2 = this.dgvFusions.Rows[e.RowIndex].Cells[0].Tag as Domain.Race; var resultCell = this.dgvFusions.Rows[e.RowIndex].Cells[e.ColumnIndex]; Domain.Race race3 = null; if (resultCell.Value != null) { race3 = GlobalObjects.CurrentGame.Races. Where(x => x.Name == resultCell.Value.ToString()).FirstOrDefault(); if (race3 == null && resultCell.ToString() == GlobalObjects.ImpossibleToFuseRace.Name) { race3 = GlobalObjects.ImpossibleToFuseRace; } if (race3 == null) { race3 = _dbSession.CreateCriteria <Domain.Race>().List <Domain.Race>() .Where(x => x.Name == resultCell.Value.ToString()).FirstOrDefault(); if (race3 == null) { race3 = GlobalObjects.InsertRaceMaybe(resultCell.ToString()); } } } if (race3 == null && resultCell.Value != null) { _logger.Info("Insertion cancelled."); } else { using (var transaction = _dbSession.BeginTransaction()) { var currentFusion = _dbSession.CreateCriteria <Domain.Fusion>().List <Domain.Fusion>() .Where(x => x.IdRace1 == race2.Id && x.IdRace2 == race1.Id) .FirstOrDefault(); if (currentFusion == null) { currentFusion = _dbSession.CreateCriteria <Domain.Fusion>().List <Domain.Fusion>() .Where(x => x.IdRace1 == race1.Id && x.IdRace2 == race2.Id) .FirstOrDefault(); } if (currentFusion != null) { _logger.Info("Got fusion " + currentFusion.ToString()); if (race3 != null) { _logger.Info("Result of fusion will now be " + race3.ToString()); currentFusion.IdRace3 = race3.Id; _logger.Info("Saving fusion " + currentFusion.ToString()); _dbSession.Update(currentFusion); _logger.Info("Saved."); } else { _logger.Info("Fusion will be deleted from database."); _dbSession.Delete(currentFusion); _logger.Info("Deleted."); } } else { currentFusion = new Domain.Fusion(race1, race2, race3); _logger.Info("Creating new fusion " + currentFusion.ToString()); _dbSession.Save(currentFusion); _logger.Info("Created."); } transaction.Commit(); _logger.Info("Fusion saved."); } } _logger.CloseSection(location); } }