public async Task <IDataResult <Evidence> > UpdateEvidenceAsync(UpdateEvidenceDTO updateEvidenceDTO)
        {
            var evidence = await _evidenceDal.GetEvidenceWithImageAsync(e => e.PublicId == updateEvidenceDTO.PublicId);

            var image = evidence.EvidenceImages.FirstOrDefault(eI => eI.EvidenceId == updateEvidenceDTO.Id).Image;

            var uploadResult = await _cloudinaryOperations.UpdateImageAsync(updateEvidenceDTO.ImageFile, evidence.PublicId);

            evidence.PublicId = uploadResult.PublicId;
            image.Url         = uploadResult.Url.ToString();
            evidence.Argument = updateEvidenceDTO.Argument;

            await _evidenceDal.UpdateEvidenceWithImageAsync(evidence, image);

            return(new SuccessfulDataResult <Evidence>(evidence, HttpStatusCode.OK));
        }
        public async Task <IDataResult <Mission> > UpdateMissionAsync(UpdateMissionDTO updateMissionDTO)
        {
            var mission = await _missionDal.GetMissionWithImagesAsync(m => m.PublicId == updateMissionDTO.PublicId);

            var image = mission.MissionImages.FirstOrDefault(mI => mI.MissionId == updateMissionDTO.Id).Image;

            var uploadResult = await _cloudinaryOperations.UpdateImageAsync(updateMissionDTO.ImageFile, mission.PublicId);

            mission.PublicId    = uploadResult.PublicId;
            mission.Latitude    = updateMissionDTO.Latitude;
            mission.Longitude   = updateMissionDTO.Longitude;
            mission.Title       = updateMissionDTO.Title;
            mission.Content     = updateMissionDTO.Content;
            mission.CreatedDate = updateMissionDTO.CreatedDate;
            mission.Difficulty  = updateMissionDTO.Difficulty;
            mission.OwnerUserId = updateMissionDTO.OwnerUserId;
            image.Url           = uploadResult.Url.ToString();

            await _missionDal.UpdateMissionWithImageAsync(mission, image);

            return(new SuccessfulDataResult <Mission>(mission, HttpStatusCode.Created));
        }