public async Task <JsonResult> SetAddressAsPrimaryOrDeliveryFor(AddressSetterVM data) { _logger.LogInformation("AddressController.SetAddressAsPrimaryFor - Service starts."); var result = await _addressService.SetFieldDataForAddress(data); return(!result.HasValue ? new JsonResult(new { Result = RESULTS.FAILED, Message = "Unable to find the address with given data. Please check again." }) : (result.Value ? new JsonResult(new { Result = RESULTS.SUCCESS }) : new JsonResult(new { Result = RESULTS.FAILED, Message = "An error occurred while attempting to update the address. Please try again." }))); }
public async Task <bool?> SetFieldDataForAddress(AddressSetterVM data) { _logger.LogInformation("HidroAddressService.SetFieldDataForAddress - AddressId=" + data.Id); var hidrogenianAddresses = await _dbContext.HidroAddress .Where(a => a.HidrogenianId == data.HidrogenianId).ToListAsync(); var addressesToUpdate = new List <HidroAddress>(); foreach (var address in hidrogenianAddresses) { if (address.Id == data.Id) { address.IsDeliveryAddress = string.Equals(data.Field, nameof(address.IsDeliveryAddress), StringComparison.CurrentCultureIgnoreCase); address.IsPrimaryAddress = string.Equals(data.Field, nameof(address.IsPrimaryAddress), StringComparison.CurrentCultureIgnoreCase); addressesToUpdate.Add(address); continue; } switch (data.Field) { case nameof(address.IsDeliveryAddress) when address.IsDeliveryAddress: address.IsDeliveryAddress = false; break; case nameof(address.IsPrimaryAddress) when address.IsPrimaryAddress: address.IsPrimaryAddress = false; break; } addressesToUpdate.Add(address); } if (addressesToUpdate.Count != 2) { return(null); } _dbContext.HidroAddress.UpdateRange(addressesToUpdate); try { await _dbContext.SaveChangesAsync(); } catch (Exception e) { _logger.LogError("HidroAddressService.SetFieldDataForAddress - Error: " + e); return(false); } return(true); }