public async Task <IActionResult> Edit(string id, [Bind("Name,Description,Location,UserId,ImageUrl,IsDeleted,DeletedOn,Id,CreatedOn,ModifiedOn")] SosSignal sosSignal)
        {
            if (id != sosSignal.Id)
            {
                return(this.NotFound());
            }

            if (this.ModelState.IsValid)
            {
                try
                {
                    this.db.Update(sosSignal);
                    await this.db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!this.SosSignalExists(sosSignal.Id))
                    {
                        return(this.NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(this.RedirectToAction(nameof(this.Index)));
            }

            this.ViewData["UserId"] = new SelectList(this.db.Users, "Id", "Id", sosSignal.UserId);
            return(this.View(sosSignal));
        }
        public async Task <IActionResult> Create([Bind("Name,Description,Location,UserId,ImageUrl,IsDeleted,DeletedOn,Id,CreatedOn,ModifiedOn")] SosSignal sosSignal)
        {
            if (this.ModelState.IsValid)
            {
                this.db.Add(sosSignal);
                await this.db.SaveChangesAsync();

                return(this.RedirectToAction(nameof(this.Index)));
            }

            this.ViewData["UserId"] = new SelectList(this.db.Users, "Id", "Id", sosSignal.UserId);
            return(this.View(sosSignal));
        }
        public async Task CreateAsync(CreateSosSignalInputModel input, string userId)
        {
            var extension = Path.GetExtension(input.Image.FileName);

            if (!this.allowedExtensions.Any(x => extension.EndsWith(x)))
            {
                throw new Exception($"Invalid image extension {extension}");
            }

            var imageUrl = await this.cloudinaryService.UploadAsync(this.cloudinary, input.Image);

            var sosSignal = new SosSignal
            {
                UserId      = userId,
                Name        = input.Name,
                Location    = input.Location,
                Description = input.Description,
                ImageUrl    = imageUrl,
            };

            await this.sosSignalsRepository.AddAsync(sosSignal);

            await this.sosSignalsRepository.SaveChangesAsync();
        }