Exemplo n.º 1
0
        public AllianceDataModel AddOrUpdate(IDbConnection connection, AllianceDataModel dataModel)
        {
            AllianceDataModel createdOrUpdatedData = null;

            if (dataModel.IsNewDataModel())
            {
                createdOrUpdatedData = _addAlliance(connection, dataModel);
            }
            else
            {
                var existAlliance = _aRepo.GetById(connection, dataModel.Id);
                if (existAlliance == null || existAlliance.Id == default(int))
                {
                    var savedAllianceId = dataModel.Id;
                    dataModel.Id         = 0;
                    createdOrUpdatedData = _addAlliance(connection, dataModel);
                    if (createdOrUpdatedData.Id != savedAllianceId)
                    {
                        dataModel.Id = savedAllianceId;
                        throw new NotImplementedException($"createdOrUpdatedData.Id!= savedAllianceId expect:{savedAllianceId}, returned:{createdOrUpdatedData.Id}");
                    }
                    dataModel.Id = savedAllianceId;
                }
                else
                {
                    createdOrUpdatedData = _updateAllianceInfo(connection, dataModel);
                }
            }
            if (createdOrUpdatedData == null)
            {
                throw new NotImplementedException();
            }
            _aNameSercher.AddOrUpdate(connection, createdOrUpdatedData.Name, new AllianceNameSerchItem
            {
                Id        = createdOrUpdatedData.Id,
                Name      = createdOrUpdatedData.Name,
                Disbandet = createdOrUpdatedData.Disbandet
            }, _aCache);
            return(createdOrUpdatedData);
        }