示例#1
0
        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." })));
        }
示例#2
0
        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);
        }