public async Task <IActionResult> addphoto(ImageViewModel model)
        {
            try
            {
                //check if the sent model not null
                if (ModelState.IsValid)
                {
                    // declare a variable
                    string fileName = null;

                    //check if the sent model has a photo
                    if (model.photo != null)
                    {
                        //declare a variable and stor in it the path of the uploaded files and photos
                        string uploading = Path.Combine(_env.WebRootPath, "Upload");

                        //give the uploaded file a unique name

                        fileName = Guid.NewGuid().ToString() + "_" + model.photo.FileName;

                        // declare a variable and store in it the name of file and the path
                        string filePath = Path.Combine(uploading, fileName);

                        model.photo.CopyTo(new FileStream(filePath, FileMode.Create));
                    }
                    //create a new object from photo class
                    Photo newphoto = new Photo
                    {
                        Path      = fileName,
                        ProjectId = model.ProjectId,
                        //Name = model.Name,
                    };

                    // add the new photo object to the database
                    await _photo.AddPhotoAsync(newphoto);

                    //save the changes
                    await _db.SaveChangesAsync();

                    var Response = new ResponseViewModel(true, HttpStatusCode.OK, "SUCCESS", newphoto);
                    return(Ok(Response));
                }

                return(null);
            }

            catch (Exception)
            {
                var Response = new ResponseViewModel(false, HttpStatusCode.NoContent, "failed", null);
                return(Ok(Response));
            }
        }