Пример #1
0
        public HttpResponseMessage Invite([FromBody] UserEmailDTO emailDTO)
        {
            //Gets the Sender from token
            var  token  = Request.Headers.Authorization.Parameter;
            User sender = UserUtility.GetUserByToken(token);

            CustomResponse response;
            bool           userHasTeam  = _repository.UserHasTeam(sender.email);
            bool           isUserLeader = _repository.IsUserLeader(sender.email);

            //Checks whether sender has a team or not
            if (!userHasTeam || !isUserLeader)
            {
                response = ResponseMessageHelper.CreateResponse(HttpStatusCode.BadRequest, true, null, ConstantResponse.TEAM_INVITE_SENDER_ERR);
                return(Request.CreateResponse <CustomResponse>(HttpStatusCode.BadRequest, response));
            }
            //Checks whether sender is trying to invite himself/herself
            else if (sender.email == emailDTO.email)
            {
                response = ResponseMessageHelper.CreateResponse(HttpStatusCode.BadRequest, true, null, ConstantResponse.TEAM_INVITE_YOURSELF);
                return(Request.CreateResponse <CustomResponse>(HttpStatusCode.BadRequest, response));
            }

            //used to get sender name etc..
            User senderLocal = _userRepository.GetByEmail(sender.email);
            User receiver    = _userRepository.GetByEmail(emailDTO.email);

            //Checks whether the sender has already sent an invitation which is not answered by the receiver yet
            bool inProgressInvite = _notificationRepository.InProgressInvite(senderLocal.id, receiver.id);

            if (inProgressInvite)
            {
                response = ResponseMessageHelper.CreateResponse(HttpStatusCode.BadRequest, true, null, ConstantResponse.TEAN_INVITE_INPROGRESS);
                return(Request.CreateResponse <CustomResponse>(HttpStatusCode.BadRequest, response));
            }
            //Checks whether the receiver is exist or not
            if (receiver == null)
            {
                response = ResponseMessageHelper.CreateResponse(HttpStatusCode.BadRequest, true, null, ConstantResponse.TEAM_INVITE_RECEIVER_ERR);
                return(Request.CreateResponse <CustomResponse>(HttpStatusCode.BadRequest, response));
            }
            //Checks whether the receiver has already had a team or not
            else if (receiver.team != null)
            {
                response = ResponseMessageHelper.CreateResponse(HttpStatusCode.BadRequest, true, null, ConstantResponse.TEAM_INVITE_RECEIVER_HAS_TEAM);
                return(Request.CreateResponse <CustomResponse>(HttpStatusCode.BadRequest, response));
            }

            //Helper class to create notification
            Notification notification = NotificationUtility.CreateForTeam(senderLocal, receiver.id);

            //Inserts created notification
            _notificationRepository.Insert(notification);

            response = ResponseMessageHelper.CreateResponse(HttpStatusCode.OK, false, ConstantResponse.OK, ConstantResponse.TEAM_INVITE_SUCCESS);
            return(Request.CreateResponse <CustomResponse>(HttpStatusCode.OK, response));
        }