public async Task <IActionResult> Edit(int id)
        {
            var individualResult = await _repository.GetEntityAsync <Individual>
                                       (id, nameof(Individual.PhoneNumbers), nameof(Individual.RelatedIndividuals));

            if (!individualResult.Success)
            {
                ModelState.AddModelError("", string.Join("\r\n", individualResult.ErrorMessages));
                return(View());
            }
            var individualEntity    = individualResult.Model;
            var individualViewModel = UpdateIndividualViewModel.Projection(individualEntity);

            return(View(individualViewModel));
        }
        public async Task <IActionResult> Edit(UpdateIndividualViewModel individual)
        {
            var individualEntityResult = await _repository.GetEntityAsync <Individual>
                                             (individual.Id, nameof(Individual.PhoneNumbers), nameof(Individual.RelatedIndividuals));

            if (!individualEntityResult.Success)
            {
                ModelState.AddModelError("", string.Join("\r\n", individualEntityResult.ErrorMessages));
                return(View(individual));
            }

            var individualEntity = individualEntityResult.Model;

            var files = HttpContext.Request.Form.Files;

            if (files != null && files.Count > 0)
            {
                var uploadResult = await files.UploadFileIfExistsAsync(_hostingEnvironment);

                if (!uploadResult.Success)
                {
                    ModelState.AddModelError(nameof(CreateIndividualViewModel.Image), string.Join("\r\n", uploadResult.ErrorMessages));
                    return(View(individual));
                }

                _hostingEnvironment.DeleteFileIfExists(individual.Image);

                individual.Image = uploadResult.Model;
            }

            var updatedIndividualEntity = UpdateIndividualViewModel.UpdateProjection(individual, individualEntity);
            var updateResult            = await _repository.UpdateEntityAsync(updatedIndividualEntity, Convert.FromBase64String(individual.RowVersion));

            if (!updateResult.Success)
            {
                ModelState.AddModelError("", string.Join("\r\n", updateResult.ErrorMessages));
                return(View(individual));
            }

            return(RedirectToAction("Details", new { id = updateResult.Model.Id }));
        }