public string SendSwapRequest(string userFrom, string userTo, string fromVeId, string toVeId, string dtFrom, string dtTo) { using (SwapEntities ent = new SwapEntities()) { // Check if any swap request has already been accepted for either of these vehicles // within this date range. Also check if current requesting user has already sent a request // for this vehicle. Guid fromVeGuid = Guid.Parse(fromVeId); Guid toVeGuid = Guid.Parse(toVeId); DateTime dateFrom = DateTime.Parse(dtFrom); DateTime dateTo = DateTime.Parse(dtTo); var checkSwap = (from tbl in ent.RequestEvents where tbl.RequestFrom == userFrom & tbl.RequestTo == userTo & tbl.FromVeId == fromVeGuid & tbl.ToVeId == toVeGuid & tbl.Accept == null & tbl.DateFrom >= DateTime.Now || tbl.RequestFrom == userFrom & tbl.RequestTo == userTo & tbl.ToVeId == toVeGuid & tbl.FromVeId == fromVeGuid & tbl.Accept == null & tbl.DateFrom >= DateTime.Now || tbl.RequestFrom == userTo & tbl.RequestTo == userFrom & tbl.ToVeId == fromVeGuid & tbl.ToVeId == fromVeGuid & tbl.Accept == null & tbl.DateFrom >= DateTime.Now || tbl.RequestFrom == userTo & tbl.RequestTo == userFrom & tbl.ToVeId == fromVeGuid & tbl.FromVeId == toVeGuid & tbl.Accept == null & tbl.DateFrom >= DateTime.Now select tbl).SingleOrDefault(); if (checkSwap == null) { // This query checks if any scheduled swaps already exist within given date range // for either user's vehicle. // var checkList = from tbl in ent.ScheduledSwaps where tbl.VeMain == fromVeGuid & tbl.DateFrom >= dateFrom & tbl.DateFrom <= dateTo || tbl.VeMain == fromVeGuid & tbl.DateTo >= dateFrom & tbl.DateTo <= dateTo || tbl.VeMain == toVeGuid & tbl.DateFrom >= dateFrom & tbl.DateFrom <= dateTo || tbl.VeMain == toVeGuid & tbl.DateTo >= dateFrom & tbl.DateTo <= dateTo || tbl.VeOther == fromVeGuid & tbl.DateFrom >= dateFrom & tbl.DateFrom <= dateTo || tbl.VeOther == fromVeGuid & tbl.DateTo >= dateFrom & tbl.DateTo <= dateTo || tbl.VeOther == toVeGuid & tbl.DateFrom >= dateFrom & tbl.DateFrom <= dateTo || tbl.VeOther == toVeGuid & tbl.DateTo >= dateFrom & tbl.DateTo <= dateTo select tbl; if (checkList.FirstOrDefault() == null) { UserClass uc = new UserClass(userFrom); RequestEvent newRequest = new RequestEvent(); Guid newGuid = Guid.NewGuid(); newRequest.Id = newGuid; newRequest.RequestFrom = userFrom; newRequest.RequestTo = userTo; newRequest.FromVeId = fromVeGuid; newRequest.ToVeId = toVeGuid; newRequest.DateFrom = dateFrom; newRequest.DateTo = dateTo; newRequest.RequestDate = DateTime.Now; ent.AddToRequestEvents(newRequest); ent.SaveChanges(); string strMsg = "Just so you know, I sent you a new swap request!"; MessageClass mc = new MessageClass(); mc.SendMsg(userFrom, userTo, strMsg, "QM"); return("true"); } else { bool isRequester = false; // Determine which user has commited to a swap within this timeframe, and notify // client script accordingly. // foreach (var item in checkList) { if (item.VeMain == fromVeGuid || item.VeOther == fromVeGuid) { isRequester = true; } } if (isRequester == true) { return("falsescheduledswapyou"); } else { return("falsescheduledswapother"); } } } else { if (checkSwap.RequestFrom == userFrom) { return("falsesentrequest"); } else if (checkSwap.RequestFrom == userTo) { return("falseothersent"); } else { return("error"); } } } }