Example #1
0
        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);
            }
        }