public async Task <IActionResult> UpdateProperty(int id, [FromBody] PropertyResource propertyResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var property = await propertyRepository.GetProperty(id, includeRelated : false);

            if (property == null)
            {
                return(NotFound());
            }
            var existingProperty = await propertyRepository.FindProperty(propertyResource);

            if (existingProperty != null)
            {
                ModelState.AddModelError("Message", "Property update error. Sorry, this property already exists!");
                return(BadRequest(ModelState));
            }
            mapper.Map <PropertyResource, Property>(propertyResource, property);
            property = await PopulateRelatedFields(property, propertyResource);

            await unitOfWork.CompleteAsync();

            return(Ok(property));
        }
        private async Task <Property> PopulateRelatedFields(Property property, PropertyResource propertyResource)
        {
            property.Owner = await ownerRepository.GetOwner((int)propertyResource.OwnerId);

            property.Suburb = await suburbRepository.GetSuburb(propertyResource.SuburbId);

            property.PropertyType = await propertyTypeRepository.GetPropertyType(propertyResource.PropertyTypeId);

            return(property);
        }
Exemplo n.º 3
0
 public async Task <Property> FindProperty(PropertyResource propertyResource)
 {
     return(await context.Properties.SingleOrDefaultAsync(record =>
                                                          record.Unit == propertyResource.Unit &&
                                                          record.Street == propertyResource.Street &&
                                                          record.SuburbId == propertyResource.SuburbId &&
                                                          record.Bedroom == propertyResource.Bedroom &&
                                                          record.Bathroom == propertyResource.Bathroom &&
                                                          record.Parking == propertyResource.Parking &&
                                                          record.PetsAllowed == propertyResource.PetsAllowed &&
                                                          record.BuiltInWardrobe == propertyResource.BuiltInWardrobe &&
                                                          record.GasAvailable == propertyResource.GasAvailable &&
                                                          record.HasStudyRoom == propertyResource.HasStudyRoom &&
                                                          record.Furnished == propertyResource.Furnished &&
                                                          record.OwnerId == propertyResource.OwnerId &&
                                                          record.PropertyTypeId == propertyResource.PropertyTypeId));
 }
        public async Task <IActionResult> CreateProperty([FromBody] PropertyResource propertyResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var property = await propertyRepository.FindProperty(propertyResource);

            if (property != null)
            {
                ModelState.AddModelError("Message", "Property creation error. Sorry, this property already exists!");
                return(BadRequest(ModelState));
            }
            property = mapper.Map <PropertyResource, Property>(propertyResource);
            property = await PopulateRelatedFields(property, propertyResource);

            property.Available = true;
            propertyRepository.Add(property);
            await unitOfWork.CompleteAsync();

            return(Ok(property));
        }