/// <summary> /// Gets the ID of an address in Address Service - if the address does not already exist, address service can use /// the address sent in the query string to Post a new address. The official Address entry will always accopany a success response. /// </summary> /// <param name="item">A model of an Address</param> /// <returns>A model of the formal Address entry in Address Services Database, including it GUID</returns> public async Task <ApiComplexAddress> PostAddressAsync(ApiComplexAddress item) { var queryString = "?" + "street=" + item.StreetAddress + "&" + "city=" + item.City + "&" + "state=" + item.State + "&" + "zipCode=" + item.ZipCode + "&" + "country=" + item.Country; using var response = await SendRequestAsync <ApiComplexAddress>(HttpMethod.Get, "api/Address" + queryString); response.EnsureSuccessStatusCode(); return(await ReadResponseBodyAsync <ApiComplexAddress>(response)); }
public void ApiComplexAddressTest() { var aId = Guid.NewGuid(); var address = new ApiComplexAddress { AddressId = aId, StreetAddress = "123 test ave", City = "Dallas", State = "TX", ZipCode = "76010" }; Assert.Equal(aId, address.AddressId); Assert.Equal("123 test ave", address.StreetAddress); Assert.Equal("Dallas", address.City); Assert.Equal("TX", address.State); Assert.Equal("76010", address.ZipCode); }
//PUT: api/complex/editcomplex public async Task <ActionResult> PutComplexAsync([FromBody] ApiComplex apiComplex) { var compAddr = new ApiComplexAddress() { AddressId = apiComplex.Address.AddressId, StreetAddress = apiComplex.Address.StreetAddress, City = apiComplex.Address.City, State = apiComplex.Address.State, ZipCode = apiComplex.Address.ZipCode, Country = apiComplex.Address.Country, }; var complex = new Logic.Complex() { ComplexId = apiComplex.ComplexId, AddressId = apiComplex.Address.AddressId, ProviderId = apiComplex.ProviderId, ContactNumber = apiComplex.ContactNumber, ComplexName = apiComplex.ComplexName }; await _complexRepository.DeleteAmenityComplexAsync(complex.ComplexId); _log.LogInformation($"(API)old amenities for complex id: {apiComplex.ComplexId} is deleted"); var amenityComplex = new Logic.AmenityComplex(); try { await _complexRepository.UpdateComplexAsync(complex); _log.LogInformation("(API) complex is updated"); var amenities = await _complexRepository.ReadAmenityListAsync(); _log.LogInformation("(API) list of amenity is read"); Guid amenityComplexId; amenityComplex.ComplexId = complex.ComplexId; foreach (var amenity in apiComplex.ComplexAmenity) { foreach (var am in amenities) { if (am.AmenityType == amenity.AmenityType) { amenityComplex.AmenityId = am.AmenityId; amenityComplexId = Guid.NewGuid(); amenityComplex.AmenityComplexId = amenityComplexId; } } await _complexRepository.CreateAmenityComplexAsync(amenityComplex); _log.LogInformation("(API)new list of amenity of complex is created"); } //send ApiComplexAddress to Address service to update the address return(StatusCode(200)); } catch (Exception ex) { _log.LogError($"(API){ex}: unable to update complex"); return(StatusCode(500, ex.Message)); } }
//Post: api/complex/PostComplex public async Task <ActionResult <ApiComplex> > PostComplexAsync([FromBody] ApiComplex apiComplex) { var compAddr = new ApiComplexAddress() { StreetAddress = apiComplex.Address.StreetAddress, City = apiComplex.Address.City, State = apiComplex.Address.State, ZipCode = apiComplex.Address.ZipCode, Country = apiComplex.Address.Country, }; var addressId = (await _addressRequest.PostAddressAsync(compAddr)).AddressId; var complexId = Guid.NewGuid(); var complex = new Logic.Complex() { ComplexId = complexId, AddressId = addressId, ProviderId = apiComplex.ProviderId, ContactNumber = apiComplex.ContactNumber, ComplexName = apiComplex.ComplexName }; var amenityComplex = new Logic.AmenityComplex(); try { await _complexRepository.CreateComplexAsync(complex); _log.LogInformation("(API)new complex in the database is inserted"); var amenities = await _complexRepository.ReadAmenityListAsync(); _log.LogInformation("(API)list of Amenity is found"); amenityComplex.ComplexId = complex.ComplexId; foreach (var amenity in apiComplex.ComplexAmenity) { foreach (var am in amenities) { if (am.AmenityType == amenity.AmenityType) { amenityComplex.AmenityId = am.AmenityId; amenityComplex.AmenityComplexId = Guid.NewGuid(); } } await _complexRepository.CreateAmenityComplexAsync(amenityComplex); _log.LogInformation($"(API)a list of amenities for complex id: {complex.ComplexId} was created"); } return(Created($"api/Complex/{complex.ComplexId}", apiComplex)); } catch (Exception ex) { _log.LogError($"(API){ex}: unable to create complex"); return(StatusCode(500, ex.Message)); } }
public async void PutComplexAsyncTest() { var cId = Guid.NewGuid(); var aId = Guid.NewGuid(); var pId = Guid.NewGuid(); var amId = Guid.NewGuid(); var address = new ApiComplexAddress { AddressId = aId, StreetAddress = "test ave", City = "dallas", State = "TX", Country = "USA", ZipCode = "76010" }; var amenity = new Logic.Amenity { AmenityId = amId, AmenityType = "name", Description = "description" }; var amenities = new List <Logic.Amenity> { amenity }; var apiComplex = new ApiComplex { ComplexId = cId, Address = address, ProviderId = pId, ComplexName = "Liv+", ContactNumber = "1234567890", ComplexAmenity = amenities }; var complex = new Logic.Complex { ComplexId = cId, AddressId = aId, ProviderId = pId, ComplexName = "Liv+", ContactNumber = "1234567890" }; var ac = new Logic.AmenityComplex { AmenityComplexId = Guid.NewGuid(), AmenityId = amId, ComplexId = cId }; var complexRepo = new Mock <IRepository>(); var logger = new Mock <ILogger <ComplexController> >(); var rss = new Mock <IRoomServiceSender>(); var ar = new Mock <IAddressRequest>(); var rr = new Mock <IRoomRequest>(); var res = true; complexRepo.Setup(r => r.DeleteAmenityComplexAsync(cId)) .Returns(Task.FromResult(res)); complexRepo.Setup(r => r.UpdateComplexAsync(complex)) .Returns(Task.FromResult(res)); complexRepo.Setup(c => c.ReadAmenityListAsync()) .Returns(Task.FromResult(amenities)); complexRepo.Setup(p => p.CreateAmenityComplexAsync(ac)) .Returns(Task.FromResult(res)); //act var controller = new ComplexController(complexRepo.Object, logger.Object, rss.Object, ar.Object, rr.Object); var model = Assert.IsAssignableFrom <StatusCodeResult>(await controller.PutComplexAsync(apiComplex)); //assert Assert.IsAssignableFrom <StatusCodeResult>(model); }