public async Task <IActionResult> Edit(string id)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var model = await this.listingService.GetEditModelAsync(user.Id, id);

            var viewModel = new OwnerListingEditInputModel
            {
                Id          = model.Id,
                Name        = model.Name,
                Description = model.Description,
                Address     = model.Address,
                City        = model.City,
                Country     = model.Country,
                Price       = model.Price,
                Status      = model.Status,
                Category    = model.Category,
                ImageFromDb = model.Image,
                RentalInfo  = model.RentalInfo,
            };

            return(this.View(viewModel));
        }
        public async Task <IActionResult> EditPostAsync(OwnerListingEditInputModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(model));
            }

            var userId = this.userManager.GetUserId(this.User);
            var user   = await this.userManager.FindByIdAsync(userId);

            var    homeEditModel = new OwnerEditListingServiceModel();
            string imgUrl        = string.Empty;
            string imgPubId      = string.Empty;

            var files = this.HttpContext.Request.Form.Files;

            if (model.Image != null)
            {
                var imgResult = await this.imageService
                                .UploadImageAsync(model.Image);

                imgUrl   = imgResult.SecureUri.AbsoluteUri;
                imgPubId = imgResult.PublicId;

                var imageToWrite = new CloudImage
                {
                    PictureUrl      = imgUrl,
                    PicturePublicId = imgPubId,
                };

                homeEditModel = new OwnerEditListingServiceModel
                {
                    Id          = model.Id,
                    Name        = model.Name,
                    Description = model.Description,
                    Price       = model.Price,
                    Category    = model.Category,
                    Status      = model.Status,
                    Image       = imageToWrite,
                };
            }
            else
            {
                homeEditModel = new OwnerEditListingServiceModel
                {
                    Id          = model.Id,
                    Name        = model.Name,
                    Description = model.Description,
                    Price       = model.Price,
                    Category    = model.Category,
                    Status      = model.Status,
                };
            }

            bool isEdited = await this.listingService.EditListingAsync(homeEditModel);

            if (!isEdited)
            {
                return(this.RedirectToAction("Details", "Listings", new { id = model.Id, Area = ManagementArea })
                       .WithWarning(string.Empty, CouldNotUpdateRecord));
            }

            await this.imageDbService.WriteToDatabasebAsync(imgUrl, imgPubId);

            return(this.RedirectToAction("Details", "Listings", new { id = model.Id, area = ManagementArea })
                   .WithSuccess(string.Empty, RecordUpdatedSuccessfully));
        }