public async Task <bool> PatchTerminal(string samNumber, [FromBody] TerminalPatch terminal) { if (terminal == null) { throw new ArgumentNullException("patch"); } var data = await _service.GetAsync(samNumber); if (data != null) { return(await _service.PatchAsync(samNumber, _mapper.Map <S.TerminalPatch>(terminal))); } return(false); }
public async Task <bool> PatchAsync(string samNumber, TerminalPatch patch) { var update = Builders <Terminal> .Update; var updates = new List <UpdateDefinition <Terminal> >(); if (patch.LeftNeighborSamNumber != null) { updates.Add(update.Set(terminal => terminal.LeftNeighborSamNumber, patch.LeftNeighborSamNumber)); } if (patch.RightNeighborSamNumber != null) { updates.Add(update.Set(terminal => terminal.RightNeighborSamNumber, patch.RightNeighborSamNumber)); } updates.Add(update.Set(terminal => terminal.InUse, patch.Available)); var result = await _terminals.UpdateOneAsync(t => t.SamNumber == samNumber, update.Combine(updates)); return(result.IsAcknowledged); }