public ActionResult AddPartitionSpace(int id, string owned)
        {
            if (!User.IsInRole("buildingmanager")) { return new HttpUnauthorizedResult(); }

            var landRegistry = landRegistriesRepository.GetById(id);
            if(landRegistry == null) { return HttpNotFound(); }

            var building = buildingsRepository.GetByLandRegistry(landRegistry);
            var cadastralParticle = landRegistry.CadastralParticle;

            PartitionSpaceCreateModel partitionSpaceCreateModel = new PartitionSpaceCreateModel() {
                CadastralParticle = Mapper.Map<CadastralParticle, CadastralParticleDetailModel>(cadastralParticle)
            };

            var addPartitionSpaceModel = new AddPartitionSpaceModel() {
                PartitionSpace = partitionSpaceCreateModel,
                Roles = Roles.GetRolesForUser(),
                CurrentRole = "buildingmanager",
                Links = new LinksModel { Id = building.Id, Links = NavLinksGenerator.GetManagerLinks(building, "Zemljišna knjiga")}
            };

            if (string.IsNullOrEmpty(owned)) {
                return View(addPartitionSpaceModel);
            } else {
                partitionSpaceCreateModel.Owner = new PhysicalPersonModel {
                    Address = new AddressModel() { Cities = new SelectList(citiesRepository.GetAll(), "Id", "Name") }
                };
                return View("AddOwnedPartitionSpace", addPartitionSpaceModel);
            }
        }
        public ActionResult AddPartitionSpace(int id, string owned, AddPartitionSpaceModel addPartitionSpaceModel)
        {
            if (!User.IsInRole("buildingmanager")) { return new HttpUnauthorizedResult(); }

            LandRegistry landRegistry = landRegistriesRepository.GetById(id);
            if (ModelState.IsValid) {
                // provjeri da li vec postoji etaža sa istim brojem uloška
                IPartitionSpace existingPartitionSpace = partitionSpacesRepository.GetPartitionSpace(addPartitionSpaceModel.PartitionSpace.RegistryNumber);

                if (existingPartitionSpace == null) {
                    if(landRegistry != null) {
                        var partitionSpaceModel = addPartitionSpaceModel.PartitionSpace;
                        try {
                            if(string.IsNullOrEmpty(owned)) {
                                landRegistry.CreatePartitionSpace(partitionSpaceModel.RegistryNumber, partitionSpaceModel.SurfaceArea,
                                                              partitionSpaceModel.Description);
                            } else {
                                Person owner = personsRepository.GetByOib(partitionSpaceModel.Owner.Oib);
                                var addressModel = partitionSpaceModel.Owner.Address;
                                var address = new Address(addressModel.StreetAddress, addressModel.StreetAddressNumber, citiesRepository.GetById(addressModel.City.Id));
                                if(string.IsNullOrEmpty(partitionSpaceModel.Owner.Surname)) {
                                    owner = owner ?? new LegalPerson(partitionSpaceModel.Owner.Oib, partitionSpaceModel.Owner.Name) {
                                        Address = address
                                    };
                                } else {
                                    owner = owner ?? new PhysicalPerson(partitionSpaceModel.Owner.Oib, partitionSpaceModel.Owner.Name,
                                        partitionSpaceModel.Owner.Surname) {
                                            Address = address
                                    };
                                }

                                var ownerRole = rolesRepository.GetRole("owner");
                                var newOwnerUser = housingMgmtUsersRepository.GetUserByPerson(owner);
                                if (newOwnerUser != null && !newOwnerUser.Roles.Contains(ownerRole)) {
                                    newOwnerUser.AddRole(ownerRole);
                                }

                                landRegistry.CreatePartitionSpace(partitionSpaceModel.RegistryNumber, partitionSpaceModel.SurfaceArea,
                                                              partitionSpaceModel.Description, owner);
                            }

                            return RedirectToAction("landregistry", new { id = landRegistry.Id });

                        } catch (BusinessRulesException ex) {
                            ex.CopyTo(ModelState);
                        }
                    } else {
                        return HttpNotFound();
                    }
                } else {
                    ModelState.AddModelError("PartitionSpace.RegistryNumber", "Etaža sa takvim brojem uloška već postoji.");
                }
            }

            var cadastralParticle = landRegistry.CadastralParticle;
            var building = buildingsRepository.GetByLandRegistry(landRegistry);
            addPartitionSpaceModel.PartitionSpace.CadastralParticle = Mapper.Map<CadastralParticle, CadastralParticleDetailModel>(cadastralParticle);
            addPartitionSpaceModel.Roles = Roles.GetRolesForUser();
            addPartitionSpaceModel.CurrentRole = "buildingmanager";
            addPartitionSpaceModel.Links = new LinksModel {Id = building.Id, Links = NavLinksGenerator.GetManagerLinks(building)};

            if (string.IsNullOrEmpty(owned)) {
                return View(addPartitionSpaceModel);
            } else {
                addPartitionSpaceModel.PartitionSpace.Owner.Address.Cities = new SelectList(citiesRepository.GetAll(), "Id", "Name");
                return View("AddOwnedPartitionSpace", addPartitionSpaceModel);
            }
        }