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; }
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; } }
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; }
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; } }
public void DeleteContactRequest(ContactRequest openInvite) { _reqs.Remove(openInvite); }
public void UpdateNetworkRequest(ContactRequest entity) { var current = _reqs.Find(entity.Id); _context.Entry<ContactRequest>(current).CurrentValues.SetValues(entity); }
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; }