public async Task <OperationResult <AddressDto> > CreateAddressAsync(CreateAddressInput input) { var validatioResult = await _addressValidator.ValidateCreateAddressAsync(input); if (validatioResult.IsSuccess) { var addresses = await _addressRepository.GetByCustomerAsync(input.CustomerEmail); if (addresses is null) { addresses = await CreateEmplyAddressCustomer(input.CustomerEmail); } var address = input.ConvertToEntity(); address.Id = Guid.NewGuid(); addresses.Addresses = addresses.Addresses.Add(address); await _addressRepository.UpdateAsync(addresses); return(OperationResult <AddressDto> .Success(address.ConvertToDto())); } return(OperationResult <AddressDto> .Fail(validatioResult)); }
/// <summary> /// To add an address to your address book, you create a new address object. You can retrieve and delete individual addresses as well as get a list of addresses. Addresses are identified by a unique random ID. /// </summary> /// <param name="CreateAddressInput">Object containing request parameters</param> /// <return>Returns the string response from the API call</return> public string CreateAddress(CreateAddressInput input) { Task <string> t = CreateAddressAsync(input); APIHelper.RunTaskSynchronously(t); return(t.Result); }
public void ConvertToEntity_AddressNotNull_ReturnSameObservations() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.Observations, address.Observations); }
public void ConvertToEntity_AddressNotNull_ReturnEmplyId() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(Guid.Empty, address.Id); }
public void ConvertToEntity_AddressNotNull_ReturnSameNumber() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.Number, address.Number); }
public void ConvertToEntity_AddressNotNull_ReturnSameCustomerEmail() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.CustomerEmail, address.CustomerEmail); }
public void ConvertToEntity_AddressNotNull_ReturnSameDepatarment() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.Depatarment, address.Depatarment); }
public void ConvertToEntity_AddressNotNull_ReturnSameBetweenStreet2() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.BetweenStreet2, address.BetweenStreet2); }
public void ConvertToEntity_AddressNotNull_ReturnSameZipCode() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.ZipCode, address.ZipCode); }
public void ConvertToEntity_AddressNotNull_ReturnSameStreet() { CreateAddressInput createAddressInput = MockCreateAddressInput(); Address address = createAddressInput.ConvertToEntity(); Assert.Equal(createAddressInput.Street, address.Street); }
public static Address ConvertToEntity(this CreateAddressInput source) { return(new() { Depatarment = source.Depatarment, BetweenStreet1 = source.BetweenStreet1, BetweenStreet2 = source.BetweenStreet2, City = source.City, Name = source.Name, Number = source.Number, Observations = source.Observations, Phone = source.Phone, Street = source.Street, Type = source.Type, ZipCode = source.ZipCode, CustomerEmail = source.CustomerEmail }); }
public async Task <ValidationResult> ValidateCreateAddressAsync(CreateAddressInput input) { ValidationResult validationResult = new(); if (string.IsNullOrWhiteSpace(input.CustomerEmail)) { validationResult.Messages.Add(new(nameof(CreateAddressInput.CustomerEmail), "Debe indicar un cliente.")); } else { Customer customer = await _customerRepository.GetCustomer(input.CustomerEmail); if (customer is null) { validationResult.Messages.Add(new(nameof(CreateAddressInput.CustomerEmail), "No existe el cliente.")); } } if (string.IsNullOrWhiteSpace(input.Name)) { validationResult.Messages.Add(new(nameof(CreateAddressInput.Name), "Debe ingresar un nombre.")); } if (string.IsNullOrWhiteSpace(input.ZipCode)) { validationResult.Messages.Add(new(nameof(CreateAddressInput.ZipCode), "Debe ingresar un código postal.")); } if (string.IsNullOrWhiteSpace(input.City)) { validationResult.Messages.Add(new(nameof(CreateAddressInput.City), "Debe ingresar una ciudad.")); } if (string.IsNullOrWhiteSpace(input.Street)) { validationResult.Messages.Add(new(nameof(CreateAddressInput.Street), "Debe ingresar una calle.")); } if (!Enum.IsDefined(input.Type)) { validationResult.Messages.Add(new(nameof(CreateAddressInput.Type), "El tipo de dirección no es valido.")); } return(validationResult); }
public async Task <Guid> CreateAsync(CreateAddressInput input) { var entity = new Address { Id = Guid.NewGuid(), UserId = input.UserId, Description = input.Description, ZipCode = input.ZipCode, Latitude = input.Latitude, Longitude = input.Longitude, CityId = input.CityId, InsertDateTime = DateTime.UtcNow }; await _context.Addresses.AddAsync(entity); await _context.SaveChangesAsync(); return(entity.Id); }
/// <summary> /// To add an address to your address book, you create a new address object. You can retrieve and delete individual addresses as well as get a list of addresses. Addresses are identified by a unique random ID. /// </summary> /// <param name="CreateAddressInput">Object containing request parameters</param> /// <return>Returns the string response from the API call</return> public async Task <string> CreateAddressAsync(CreateAddressInput input) { //validating required parameters if (null == input.Name) { throw new ArgumentNullException("name", "The property \"Name\" in the input object cannot be null."); } if (null == input.Address) { throw new ArgumentNullException("address", "The property \"Address\" in the input object cannot be null."); } if (null == input.Country) { throw new ArgumentNullException("country", "The property \"Country\" in the input object cannot be null."); } if (null == input.State) { throw new ArgumentNullException("state", "The property \"State\" in the input object cannot be null."); } if (null == input.City) { throw new ArgumentNullException("city", "The property \"City\" in the input object cannot be null."); } if (null == input.Zip) { throw new ArgumentNullException("zip", "The property \"Zip\" in the input object cannot be null."); } //the base uri for api requestss string _baseUri = Configuration.GetBaseURI(); //prepare query string for API call StringBuilder _queryBuilder = new StringBuilder(_baseUri); _queryBuilder.Append("/address/createaddress.{ResponseType}"); //process optional template parameters APIHelper.AppendUrlWithTemplateParameters(_queryBuilder, new Dictionary <string, object>() { { "ResponseType", input.ResponseType } }); //validate and preprocess url string _queryUrl = APIHelper.CleanUrl(_queryBuilder); //append request with appropriate headers and parameters var _headers = new Dictionary <string, string>() { { "user-agent", "message360-api" } }; //append form/field parameters var _fields = new Dictionary <string, object>() { { "name", input.Name }, { "address", input.Address }, { "country", input.Country }, { "state", input.State }, { "city", input.City }, { "zip", input.Zip }, { "description", input.Description }, { "email", input.Email }, { "phone", input.Phone } }; //prepare the API call request to fetch the response HttpRequest _request = ClientInstance.Post(_queryUrl, _headers, _fields, Configuration.BasicAuthUserName, Configuration.BasicAuthPassword); //invoke request and get response HttpStringResponse _response = (HttpStringResponse)await ClientInstance.ExecuteAsStringAsync(_request).ConfigureAwait(false); HttpContext _context = new HttpContext(_request, _response); //handle errors defined at the API level base.ValidateResponse(_response, _context); try { return(_response.Body); } catch (Exception _ex) { throw new APIException("Failed to parse the response: " + _ex.Message, _context); } }
public async Task <IActionResult> Create(CreateAddressInput input) { var result = await _service.CreateAddressAsync(input); return(new OperationActionResult(result)); }
public async Task <Guid> Post([FromBody] CreateAddressInput input) => await _service.CreateAsync(input);