Пример #1
0
        // GET: Employees/Verify/5
        public async Task <IActionResult> Verify(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var employee = await _employees.FindByIdAsync(id.Value);

            if (employee == null)
            {
                return(NotFound());
            }


            // Populate Photo View Model
            var photoData  = new EmployeePhotoViewModel(employee, _storageService);
            var validPhoto = await _employees.ValidatePhotoAsync(employee);

            photoData.MapFacesForValidation(validPhoto.Faces);
            if (!validPhoto.IsValidEmployeePhoto)
            {
                ViewBag.ErrorMessage = "There was an error with the photo.";
            }
            ViewBag.KnownPhotoData    = photoData;
            ViewBag.ToVerifyPhotoData = new EmployeePhotoViewModel();

            return(View(employee));
        }
Пример #2
0
        // GET: Employees/Edit/5
        public async Task <IActionResult> Edit(int?id, bool highlightFaces = false)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var employee = await _employees.FindByIdAsync(id.Value);

            if (employee == null)
            {
                return(NotFound());
            }

            // Populate Photo View Model
            var photoData = new EmployeePhotoViewModel(employee, _storageService);

            if (highlightFaces == true)
            {
                // Check Faces
                var validPhoto = await _employees.ValidatePhotoAsync(employee);

                photoData.MapFacesForValidation(validPhoto.Faces);
                if (!validPhoto.IsValidEmployeePhoto)
                {
                    ViewBag.ErrorMessage = "There was an error with the photo.";
                }
            }
            ViewBag.PhotoData = photoData;

            return(View(employee));
        }
Пример #3
0
        public async Task <IActionResult> VerifySubmit(int id, IFormFile photo)
        {
            var employee = await _employees.FindByIdAsync(id);

            // Populate Known Photo View Model
            var photoData  = new EmployeePhotoViewModel(employee, _storageService);
            var validPhoto = await _employees.ValidatePhotoAsync(employee);

            photoData.MapFacesForValidation(validPhoto.Faces);
            if (!validPhoto.IsValidEmployeePhoto)
            {
                ViewBag.ErrorMessage = "There was an error with the photo.";
            }
            ViewBag.KnownPhotoData = photoData;

            // Upload the Verification Photo to Blob Storage
            var uniqueVerifyPath = "verify/" + System.Guid.NewGuid().ToString() + Path.GetExtension(photo.FileName);
            var photoUploadData  = await _storageService.WriteEmployeePhoto(employee.Id, uniqueVerifyPath, photo);

            var verifyFullUrl = _storageService.FullPhotoUrl(employee.Id, uniqueVerifyPath);

            // Run Verification
            var verifyData = await _employees.VerifyPhotoAsync(employee, verifyFullUrl);

            // Populate Photo Data for Verification Matches
            var verifyPhotoData = new EmployeePhotoViewModel(employee, _storageService);

            verifyPhotoData.Url = verifyFullUrl;
            verifyPhotoData.OriginalImageHeight = photoUploadData.ImageHeight;
            verifyPhotoData.OriginalImageWidth  = photoUploadData.ImageWidth;
            verifyPhotoData.MapFacesForVerification(verifyData);
            ViewBag.ToVerifyPhotoData = verifyPhotoData;

            ViewBag.IsMatch = false;
            if (verifyData.Where(y => y.IsMatch == true).Count() > 0)
            {
                ViewBag.IsMatch = true;
            }

            return(View(employee));
        }
Пример #4
0
 private void EmployeePhoto_OnUnloaded(object sender, RoutedEventArgs e)
 {
     EmployeePhotoViewModel.CleanUp();
 }
Пример #5
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,FirstName,LastName,Department,PhotoFileName,RowVersion")] Employee employee, IFormFile photo)
        {
            if (id != employee.Id)
            {
                return(NotFound());
            }

            // Populate Model for Photo
            var photoData = new EmployeePhotoViewModel(employee, _storageService);

            if (ModelState.IsValid)
            {
                if (await _employees.UpdateAsync(employee))
                {
                    if (photo != null)
                    {
                        // Upload Photo File to Blob Storage Here
                        var photoFileName = Path.GetFileName(photo.FileName);

                        var photoUploadData = await _storageService.WriteEmployeePhoto(employee.Id, photoFileName, photo);

                        if (photoUploadData.Success)
                        {
                            var employeeToUpdate = await _employees.FindByIdAsync(employee.Id);

                            employeeToUpdate.PhotoHeight   = photoUploadData.ImageHeight;
                            employeeToUpdate.PhotoWidth    = photoUploadData.ImageWidth;
                            employeeToUpdate.PhotoFileName = photoFileName;
                            await _employees.UpdateAsync(employeeToUpdate);

                            // Update ViewModel with new photo information
                            photoData = new EmployeePhotoViewModel(employeeToUpdate, _storageService);

                            /*photoData.Url = _storageService.FullPhotoUrl(employee.Id, employee.PhotoFileName);
                             * photoData.AltText = employee.FirstName + " " + employee.LastName;
                             * photoData.OriginalImageHeight = photoUploadData.ImageHeight;
                             * photoData.OriginalImageWidth = photoUploadData.ImageWidth;*/
                        }

                        // Check Faces
                        var validPhoto = await _employees.ValidatePhotoAsync(employee);

                        photoData.MapFacesForValidation(validPhoto.Faces);
                        if (!validPhoto.IsValidEmployeePhoto)
                        {
                            ViewBag.ErrorMessage = "There was an error with the photo.";
                        }
                        else
                        {
                            ViewBag.SuccessMessage = "Changes Saved";
                        }
                        ViewBag.PhotoData = photoData;
                        return(View(employee));
                    }
                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    ViewBag.ErrorMessage = "An error occurred while updating the employee.";
                    ViewBag.PhotoData    = photoData;
                    return(View(employee));
                }
            }

            ViewBag.PhotoData = photoData;
            return(View(employee));
        }