public async Task <Result> Save(Person person, Estate estate)
        {
            if ((await GetDataByIdentifier(person.Id, estate.Id)).HasValue)
            {
                return(Result.Failure($"{person.FullName} ya se encuentra registrado en esta propieda"));
            }

            _dbContext.Add(PersonsByEstate.Create(person, estate));
            await _dbContext.SaveChangesAsync();

            return(Result.Ok());
        }
        public async Task <IActionResult> Create([Bind(ATTRIBUTES_TO_BIND)] ContractVM UpdateVm)
        {
            Person person = await _personRepository.GetById(UpdateVm.PersonId);

            Estate estate = await _estateRepository.GetById(UpdateVm.EstateId);

            WaterMeter meter = await _waterMeterRepository.GetById(UpdateVm.MeterId);

            ContractType contractType = await _contractTypeRepository.GetById(UpdateVm.ContractTypeId);

            Contract localContract = Contract.Create(contractType: contractType,
                                                     personsByEstate: PersonsByEstate.Create(person, estate),
                                                     waterMeter: meter,
                                                     initialMeterRead: UpdateVm.InitialMeterRead,
                                                     doubleBasicCharge: UpdateVm.DoubleBasicCharge,
                                                     isActive: UpdateVm.IsActive);

            return(await ConfirmSaveConcrete(UpdateVm, localContract));
        }