コード例 #1
0
        private bool validateNewRequest(ContactRequest request)
        {
            bool valid = true;
            ValidationDic.Clear();

            //
            var blacklist = _repo.QueryBlackList().Where(b => b.CompanyId == request.SenderId && b.BlackListedCompanyId == request.RecipientId).FirstOrDefault();

            if (blacklist != null)
            {
                valid = false;
                ValidationDic.Add("Blacklist", "Company is Blacklisted");
            }

            // get requests sent by company a to company b that have not been responded to yet
            int openRequests = _repo.QueryContactRequests()
                                    .Where(r => ((r.SenderId == request.SenderId && r.RecipientId == request.RecipientId) || (r.SenderId == request.RecipientId && r.RecipientId == request.SenderId)) &&
                                        !r.AcceptDate.HasValue &&
                                        !r.DeclineDate.HasValue)
                                    .Count();

            if (openRequests > 0)
            {
                valid = false;
                ValidationDic.Add("Request", "There is still a pending request");
            }

            // check if two companies are already connected
            int existingConnection = _repo.QueryNetworkConnections()
                                            .Where(c => (c.LeftId == request.SenderId && c.RightId == request.RecipientId) ||
                                                (c.LeftId == request.RecipientId && c.RightId == request.SenderId))
                                            .Count();

            if (existingConnection > 0)
            {
                valid = false;
                ValidationDic.Add("Connection", "Already connected to company");
            }

            return valid;
        }
コード例 #2
0
 public bool CancelNetworkRequest(ContactRequest openInvite)
 {
     try
     {
         if (validateExistingRequest(openInvite))
         {
             _repo.DeleteContactRequest(openInvite);
             _repo.SaveChanges();
             return true;
         }
         else
         {
             return false;
         }
     }
     catch (Exception ex)
     {
         ValidationDic.Clear();
         ValidationDic.Add("Exception", ex.Message);
         return false;
     }
 }
コード例 #3
0
        private bool validateExistingRequest(ContactRequest request)
        {
            bool valid = true;

            ContactRequest openReq = _repo.FindNetworkRequest(request.Id);

            if (openReq.AcceptDate.HasValue || openReq.DeclineDate.HasValue)
            {
                valid = false;
                ValidationDic.Add("Request", "this request has already been responded to");
            }

            return valid;
        }
コード例 #4
0
        public bool UpdateNetworkRequest(ContactRequest request)
        {
            try
            {
                _repo.UpdateNetworkRequest(request);
                _repo.SaveChanges();
                return true;

            }
            catch (Exception ex)
            {
                ValidationDic.Clear();
                ValidationDic.Add("Exception", ex.Message);
                return false;
            }
        }
コード例 #5
0
 public void DeleteContactRequest(ContactRequest openInvite)
 {
     _reqs.Remove(openInvite);
 }
コード例 #6
0
 public void UpdateNetworkRequest(ContactRequest entity)
 {
     var current = _reqs.Find(entity.Id);
     _context.Entry<ContactRequest>(current).CurrentValues.SetValues(entity);
 }
コード例 #7
0
        public HttpResponseMessage Post(HttpRequestMessage request, int recipientId)
        {
            HttpResponseMessage response;

            int senderId = _service.GetUserProfile(_security.GetUserId(User.Identity.Name)).CompanyId;
            ContactRequest existingRequest = _service.GetOpenNetworkRequest(recipientId, senderId);
            ContactConnection connection = _service.GetNetworkConnection(senderId, recipientId);
            BlackList blacklistThisSide = _service.GetBlackListItem(senderId, recipientId);

            // if either company has blocked the other
            if (blacklistThisSide != null)
            {
                response = request.CreateResponse(HttpStatusCode.Conflict, "must de-blacklist company first before sending a contact request");
                return response;
            }

            if (existingRequest != null)
            {
                response = request.CreateResponse(HttpStatusCode.Conflict, "reqeust has already been sent");
                return response;
            }

            if (connection != null)
            {
                response = request.CreateResponse(HttpStatusCode.Conflict, "already connected to this contact");
                return response;
            }

            if (senderId == recipientId)
            {
                response = request.CreateResponse(HttpStatusCode.Conflict, "cannot connect to self");
                return response;
            }

            ContactRequest friendRequest = new ContactRequest
            {
                RecipientId = recipientId,
                SenderId = senderId,
                SentDate = DateTime.Now
            };

            if (_service.SendNetworkRequest(friendRequest))
            {
                response = request.CreateResponse(HttpStatusCode.Created, friendRequest);
            }
            else
            {
                response = request.CreateResponse(HttpStatusCode.Conflict);
            }

            return response;
        }