public async Task <IDataResult <Mission> > AddMissionAsync(CreateMissionDTO createMissionDTO)
        {
            var uploadResult = await _cloudinaryOperations.UploadImageAsync(createMissionDTO.ImageFile);

            var mission = _mapper.Map <Mission>(createMissionDTO);

            await AddMissionWithImageAsync(mission, uploadResult);

            return(new SuccessfulDataResult <Mission>(mission, HttpStatusCode.Created));
        }
        public async Task <IDataResult <Evidence> > AddEvidenceAsync(CreateEvidenceDTO createEvidenceDTO)
        {
            var uploadResult = await _cloudinaryOperations.UploadImageAsync(createEvidenceDTO.ImageFile);

            var evidence = _mapper.Map <Evidence>(createEvidenceDTO);

            await AddEvidenceWithImageAsync(evidence, uploadResult);

            return(new SuccessfulDataResult <Evidence>(evidence, HttpStatusCode.OK));
        }
        public async Task <IResult> Register(UserRegisterDTO userRegisterDTO)
        {
            User newUser = new User
            {
                UserName        = userRegisterDTO.UserName,
                Email           = userRegisterDTO.Email,
                NormalizedEmail = userRegisterDTO.Email
            };

            bool isRoleExisting = await _roleManager.RoleExistsAsync("User");

            if (!isRoleExisting)
            {
                UserRole newRole = new UserRole
                {
                    Name = "User"
                };
                IdentityResult roleResult = await _roleManager.CreateAsync(newRole);

                if (!roleResult.Succeeded)
                {
                    return(new ErrorResult(HttpStatusCode.InternalServerError));
                }
            }


            if (userRegisterDTO.ImageFile != null)
            {
                var uploadResult = await _cloudinaryOperations.UploadImageAsync(userRegisterDTO.ImageFile);
                await AddUserWithImageAsync(newUser, uploadResult);
            }
            else
            {
                await _userDal.AddAsync(newUser);
            }

            var user = await _userManager.FindByEmailAsync(userRegisterDTO.Email);

            var token = await _userManager.GeneratePasswordResetTokenAsync(user);

            var result = await _userManager.ResetPasswordAsync(user, token, userRegisterDTO.Password);

            _userManager.AddToRoleAsync(user, "User").Wait();
            return(new SuccessfulResult(HttpStatusCode.Created));
        }