Ejemplo n.º 1
0
        //Work Well
        public async Task EditRentalInfo(EditRentalInfoForPropertyViewModel rentalInfoEditModel, string loggedUserId)
        {
            if (loggedUserId == null)
            {
                throw new ArgumentNullException(nameof(loggedUserId));
            }

            var rentalInfoToEdit = unitOfWork.RentalsRepository
                                   .Where(r => r.Id == rentalInfoEditModel.RentalInfoId)
                                   .FirstOrDefault() ?? throw new ContentNotFoundException("Не е намерен имотът!");


            if (rentalInfoToEdit.Property.OwnerId != loggedUserId && rentalInfoToEdit.Property.AgentId != loggedUserId &&
                !await userManager.IsInRoleAsync(loggedUserId, "Administrator"))
            {
                throw new NotAuthorizedException("Нямате право да редактирате този имот!");
            }

            rentalInfoToEdit.UnitTypeId            = rentalInfoEditModel.UnitTypeId;
            rentalInfoToEdit.AdditionalDescription = rentalInfoEditModel.AdditionalInfo;
            rentalInfoToEdit.RentalPrice           = rentalInfoEditModel.RentalPrice;
            rentalInfoToEdit.UnitCount             = rentalInfoEditModel.UnitCount;
            rentalInfoToEdit.RentalPricePeriodId   = rentalInfoEditModel.RentalPricePeriodId;

            //Add New Extras
            rentalInfoToEdit.Extras.Clear();
            var extrasToBeAdded = _extrasManager.GetRentalExtras(rentalInfoEditModel.RentalExtras
                                                                 .Where(r => r.IsChecked)
                                                                 .Select(r => r.ExtraId)
                                                                 .ToList());

            rentalInfoToEdit.Extras = new HashSet <Extras>(extrasToBeAdded);

            rentalInfoToEdit.Attributes.Clear();
            rentalInfoToEdit.Attributes = new HashSet <KeyValuePairs>(rentalInfoEditModel.Attributes
                                                                      .Select(a => new KeyValuePairs
            {
                Key   = a.Key,
                Value = a.Value
            })
                                                                      .ToList());

            unitOfWork.RentalsRepository.Edit(rentalInfoToEdit);
            unitOfWork.Save();
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Edit(EditRentalInfoForPropertyViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(ModelState.ToDictionary()));
            }

            try
            {
                await _rentalInfoManager.EditRentalInfo(model, User.Identity.GetUserId());

                return(Json("STATUS_OK"));
            }
            catch (ContentNotFoundException ex)
            {
                return(HttpNotFound(ex.Message));
            }
        }