예제 #1
0
        public async Task <Result <ActivityModel, Error> > Add(CreateActivityModel model)
        {
            // Check authority
            var userId = Guid.Parse(_accessor.HttpContext.User.Claims.First(c => c.Type == "userId").Value);
            var user   = await _userRepository.GetById(userId);

            var userType = await _userTypeRepository.GetByName("Admin");

            if (userType.Id != user.UserTypeId)
            {
                return(Result.Failure <ActivityModel, Error>(ErrorsList.UnauthorizedUser));
            }

            var isActivityTypeNull = (await _activityTypesRepository.GetById(model.ActivityTypeId)) == null;

            if (isActivityTypeNull)
            {
                return(Result.Failure <ActivityModel, Error>(ErrorsList.UnavailableActivityType));
            }
            var isCityNull = (await _cityRepository.GetById(model.CityId)) == null;

            if (isCityNull)
            {
                return(Result.Failure <ActivityModel, Error>(ErrorsList.InvalidCity));
            }
            var activityModel = await _activitiesRepository.GetByName(model.Name);

            if (activityModel != null)
            {
                return(Result.Failure <ActivityModel, Error>(ErrorsList.ActivityExists));
            }

            var activityEntity = _mapper.Map <Activity>(model);

            await _activitiesRepository.Add(activityEntity);

            await _activitiesRepository.SaveChanges();

            return(_mapper.Map <ActivityModel>(activityEntity));
        }
예제 #2
0
        public async Task <Result <string, Error> > Delete(Guid activityTypeId)
        {
            var activityType = await _activityTypesRepository.GetById(activityTypeId);

            if (activityType == null)
            {
                return(Result.Failure <string, Error>(ErrorsList.UnavailableActivityType));
            }

            var userId = Guid.Parse(_accessor.HttpContext.User.Claims.First(c => c.Type == "userId").Value);
            var user   = await _userRepository.GetById(userId);

            var userType = await _userTypeRepository.GetByName("Admin");

            if (user.UserTypeId != userType.Id)
            {
                return(Result.Failure <string, Error>(ErrorsList.UnauthorizedUser));
            }

            _activityTypesRepository.Delete(activityType);
            await _activityTypesRepository.SaveChanges();

            return(Result.Success <string, Error>("ActivityType deleted successfully"));
        }