public static RetainerData ToDb(this RetainerInfoItem item, long characterId, int world) { var result = new RetainerData(); { result.RetainerId = item.RetainerId; result.RetainerName = item.RetainerName; result.Character = characterId; result.Location = item.RetainerLocation; result.World = world; } return result; }
public RetainerData Commit(long accountId, RetainerData data, bool saveChange) { if (data == null) { throw new InvalidOperationException(); } if (data.RetainerId <= 0) { throw new InvalidOperationException(); } var source = _context.RetainerData.SingleOrDefault(x => x.RetainerId == data.RetainerId); var update = false; if (source != null) { if (data.RetainerName != null && data.RetainerName != source.RetainerName) { _context.DataLog.Add(new DataLog { FromValue = source.RetainerName, ToValue = data.RetainerName, Operator = accountId, RecordId = source.RetainerId, TableColumn = GlobalOperation.COLUMN_RETAINER_NAME, ReportTime = _time.UtcNow }); source.RetainerName = data.RetainerName; update = true; } if (data.Character != 0 && data.Character != source.Character) { _context.DataLog.Add(new DataLog { FromValue = source.Character.ToString(), ToValue = data.Character.ToString(), Operator = accountId, RecordId = source.RetainerId, TableColumn = GlobalOperation.COLUMN_RETAINER_CHARA, ReportTime = _time.UtcNow }); source.Character = data.Character; update = true; } if (data.World != 0 && data.World != source.World) { _context.DataLog.Add(new DataLog { FromValue = source.World.ToString(), ToValue = data.World.ToString(), Operator = accountId, RecordId = source.RetainerId, TableColumn = GlobalOperation.COLUMN_RETAINER_WORLD, ReportTime = _time.UtcNow }); source.World = data.World; update = true; } if (data.Location != 0 && data.Location != source.Location) { _context.DataLog.Add(new DataLog { FromValue = source.Location.ToString(), ToValue = data.Location.ToString(), Operator = accountId, RecordId = source.RetainerId, TableColumn = GlobalOperation.COLUMN_RETAINER_LOCATION, ReportTime = _time.UtcNow }); source.Location = data.Location; update = true; } if (data.Inventory != null) { source.Inventory = data.Inventory; update = true; } _context.RetainerData.Update(source); } else { //source = _context.RetainerData.CreateProxy(); source = new RetainerData(); { source.RetainerId = data.RetainerId; source.RetainerName = data.RetainerName; source.Character = data.Character; source.Inventory = data.Inventory; source.World = data.World; source.Location = data.Location; } _context.RetainerData.Add(source); _context.SaveChanges(); _context.DataLog.Add(new DataLog { FromValue = null, ToValue = "INITIAL COMMIT", Operator = accountId, RecordId = source.RetainerId, TableColumn = GlobalOperation.COLUMN_RETAINER_NEW, ReportTime = _time.UtcNow }); update = true; } if (update && saveChange) { _context.SaveChanges(); } return(source); }