//Update capacity public bool UpdateCapacity(AcceptedRequest acceptedRequest) { bool status = false; try { LaundryRequest ownerRequest = (from lr in _context.LaundryRequest where lr.UserId == acceptedRequest.OwnerId select lr).FirstOrDefault(); LaundryRequest washerRequest = (from lr in _context.LaundryRequest where lr.UserId == acceptedRequest.WasherId select lr).FirstOrDefault(); int newCapacity = 0; if (ownerRequest.Weight >= washerRequest.Weight) { newCapacity = ownerRequest.Weight - washerRequest.Weight; ownerRequest.Weight = newCapacity; _context.SaveChanges(); if (newCapacity == 0) { acceptedRequest.Status = "Active"; status = StartWashCycle(acceptedRequest.AcceptedRequestId); } } } catch (Exception ex) { status = false; } return(status); }
public ActionResult Edit(long id, AcceptedRequest acceptedrequest, bool html = false) { acceptedrequest.AcceptedRequestId = id; if (ModelState.IsValid) { db.Entry(acceptedrequest).State = EntityState.Modified; db.SaveChanges(); if (html) { return(RedirectToAction("Details", new { id = acceptedrequest.AcceptedRequestId })); } return(Json(new Response { Data = "Saved" })); } if (html) { return(View(acceptedrequest)); } return(Json(new Response { Data = "Failed" })); }
//Update wash status public bool UpdateWashStatus(int acceptedRequestId) { bool status = false; try { AcceptedRequest acceptedRequest = new AcceptedRequest(); acceptedRequest = (from ar in _context.AcceptedRequest where ar.AcceptedRequestId == acceptedRequestId select ar).FirstOrDefault(); if (acceptedRequest != null) { //Update status as completed acceptedRequest.Status = "Complete"; //Debit transaction Transaction debitTransaction = new Transaction(); debitTransaction.UserId = acceptedRequest.WasherId; int? washerReqId = acceptedRequest.WasherRequestId; LaundryRequest washerRequest = (from lr in _context.LaundryRequest where lr.RequestId == washerReqId select lr).FirstOrDefault(); debitTransaction.Laundrocash = washerRequest.Weight; debitTransaction.TransactionType = "D"; debitTransaction.Message = "Debited successfully"; debitTransaction.TransactionDateTime = DateTime.Now; //Credit transaction Transaction creditTransaction = new Transaction(); creditTransaction.UserId = acceptedRequest.OwnerId; int? ownerReqId = acceptedRequest.OwnerRequestId; LaundryRequest ownerRequest = (from lr in _context.LaundryRequest where lr.RequestId == ownerReqId select lr).FirstOrDefault(); creditTransaction.Laundrocash = ownerRequest.Weight; creditTransaction.TransactionType = "C"; creditTransaction.Message = "Credited successfully"; creditTransaction.TransactionDateTime = DateTime.Now; //Add transactions _context.Transaction.Add(debitTransaction); _context.Transaction.Add(creditTransaction); //Update request status as Inactive washerRequest.Status = "Inactive"; ownerRequest.Status = "Inactive"; //Save changes _context.SaveChanges(); status = true; } } catch (Exception ex) { status = false; } return(status); }
// // GET: /AcceptedRequest/Delete/5 public ActionResult Delete(long id = 0) { AcceptedRequest acceptedrequest = db.AcceptedRequests.Find(id); if (acceptedrequest == null) { return(HttpNotFound()); } return(View(acceptedrequest)); }
// // GET: /AcceptedRequest/Edit/5 public ActionResult Edit(long id = 0) { AcceptedRequest acceptedrequest = db.AcceptedRequests.Find(id); if (acceptedrequest == null) { return(HttpNotFound()); } ViewBag.RequestId = new SelectList(db.Requests, "RequestId", "Title", acceptedrequest.RequestId); ViewBag.UserId = new SelectList(db.Users, "UserId", "Identifier", acceptedrequest.UserId); return(View(acceptedrequest)); }
private void PrintRequest(AcceptedRequest request) { string completed = request.IsCompleted ? "COMPLETE" : "PENDING "; Console.WriteLine($"Request #{request.Id} is {completed}"); Console.WriteLine($"Input: {request.Input}"); Console.WriteLine($"Created {request.CreatedOn:G}, delay {request.RequestedProcessingTimeMs}ms, scheduled {request.ScheduledCompletionTime:G}"); if (request.IsCompleted) { Console.WriteLine($"Completed {request.ActualCompletionTime:G}, actual processing time {request.ActualProcessingTimeMs}ms"); Console.WriteLine($"Output: {request.Output}"); } }
private void CompleteRequest(AcceptedRequest request) { var now = DateTime.UtcNow; var output = (request.Input ?? "") + " DONE"; lock (_requests) { request.Revision = ++_lastRevision; request.Output = output; request.ActualCompletionTime = now; request.ActualProcessingTimeMs = (int)((now - request.CreatedOn).TotalMilliseconds + 0.5); request.IsCompleted = true; } }
public void StartListening() { try { IPAddress localAddr = IPAddress.Parse(OuterServer.FindIPAddress()); listener = new TcpListener(localAddr, this.listeningPort); // Start listening for client requests. listener.Start(); // Enter the listening loop while (true) { Console.Write("Waiting for a connection... "); // Perform a blocking call to accept requests. TcpClient client = listener.AcceptTcpClient(); // Get a stream object for reading and writing NetworkStream stream = client.GetStream(); var acceptedRequest = new AcceptedRequest(); acceptedRequest.AcceptRequest(stream); String responseBody = HandleRequest(acceptedRequest); Responder.WriteResponse(stream, responseBody); // Shutdown and end connection stream.Close(); client.Close(); Console.WriteLine("Client closed\n"); } } catch (SocketException ex) { Console.WriteLine("SocketException: {0}", ex); } finally { // Stop listening for new clients. listener.Stop(); } }
//Create accepted request public bool AcceptedRequest(MatchedRequest matchedRequest) { bool status = false; try { AcceptedRequest acceptedRequest = new AcceptedRequest(); acceptedRequest.OwnerId = matchedRequest.OwnerId; acceptedRequest.Status = "Incomplete"; acceptedRequest.OwnerRequestId = matchedRequest.OwnerRequestId; acceptedRequest.WasherId = matchedRequest.WasherId; acceptedRequest.WasherRequestId = matchedRequest.WasherRequestId; acceptedRequest.TimeStamp = DateTime.Now; _context.AcceptedRequest.Add(acceptedRequest); _context.SaveChanges(); status = UpdateCapacity(acceptedRequest); } catch (Exception ex) { status = false; } return(status); }
private long _lastRevision; // = 0 public AcceptedRequest CreateRequest(Request rawRequest) { if (rawRequest == null) { throw new ArgumentException(nameof(rawRequest)); } var delay = rawRequest.RequestedProcessingTimeMs; if (delay < 0) { throw new ArgumentException("RequestProcessingTimeMs must not be negative"); } var now = DateTime.UtcNow; AcceptedRequest request; lock (_requests) { var id = ++_lastRequestId; var revision = ++_lastRevision; request = new AcceptedRequest { Id = id, Revision = revision, Input = rawRequest.Input, RequestedProcessingTimeMs = delay, CreatedOn = now, ScheduledCompletionTime = now.AddMilliseconds(delay) }; _requests[id] = request; } Task.Delay(delay).ContinueWith((task, state) => CompleteRequest(request), null); return(request); }
public ActionResult Create(AcceptedRequest acceptedrequest, bool html = false) { if (ModelState.IsValid) { db.AcceptedRequests.Add(acceptedrequest); db.SaveChanges(); if (html) { return(RedirectToAction("Details", new { id = acceptedrequest.AcceptedRequestId })); } return(Json(new Response { Data = new { acceptedrequest.AcceptedRequestId } })); } if (html) { return(View(acceptedrequest)); } return(Json(new Response { Data = "Failed" })); }
private String HandleLocalRequest(AcceptedRequest acceptedRequest) { String responseBody = String.Empty; String jsonValue = String.Empty; String ENTER = "\ue007"; int innerPort = 9998; String sessionId = "awesomeSessionId"; String request = acceptedRequest.request; String content = acceptedRequest.content; String command = Parser.GetRequestCommand(request); switch (command) { case "session": String innerIp = InitializeApplication(); //Console.WriteLine("Enter inner driver ip"); //String innerIp = Console.ReadLine(); Console.WriteLine("Inner ip: " + innerIp); phoneRequester = new Requester(innerIp, innerPort); String jsonResponse = Responder.CreateJsonResponse(sessionId, ResponseStatus.Sucess, new JsonCapabilities("WinPhone")); responseBody = jsonResponse; break; //if the text has the ENTER command in it, execute it after sending the rest of the text to the inner driver case "value": bool needToClickEnter = false; JsonValueContent oldContent = JsonConvert.DeserializeObject<JsonValueContent>(content); String[] value = oldContent.GetValue(); if (value.Contains(ENTER)) { needToClickEnter = true; value = value.Where(val => val != ENTER).ToArray(); } JsonValueContent newContent = new JsonValueContent(oldContent.sessionId, oldContent.id, value); responseBody = phoneRequester.SendRequest(Parser.GetRequestUrn(request), JsonConvert.SerializeObject(newContent)); if (needToClickEnter) OuterDriver.ClickEnter(); break; case "moveto": JsonMovetoContent moveToContent = JsonConvert.DeserializeObject<JsonMovetoContent>(content); String elementId = moveToContent.element; Point coordinates = new Point(); if (elementId != null) { String locationRequest = "/session/" + sessionId + "/element/" + elementId + "/location"; String locationResponse = phoneRequester.SendRequest(locationRequest, String.Empty); JsonResponse JsonResponse = JsonConvert.DeserializeObject<JsonResponse>(locationResponse); Dictionary<String, String> values = JsonConvert.DeserializeObject<Dictionary<String, String>>(JsonResponse.value.ToString()); coordinates.X = Convert.ToInt32(values["x"]); coordinates.Y = Convert.ToInt32(values["y"]); } else { coordinates = new Point(Int32.Parse(moveToContent.xOffset), Int32.Parse(moveToContent.yOffset)); } OuterDriver.MoveCursorToEmulatorCoordinates(coordinates); break; case "click": int requestLength = Parser.GetRequestLength(request); if (requestLength == 3) { //simple click command without element OuterDriver.ClickLeftMouseButton(); break; } responseBody = phoneRequester.SendRequest(Parser.GetRequestUrn(request), content); JsonResponse response = JsonConvert.DeserializeObject<JsonResponse>(responseBody); var clickValue = (String)response.value; if (clickValue != null) { String[] clickCoordinatesArray = ((String)clickValue).Split(':'); int xOffset = Convert.ToInt32(clickCoordinatesArray[0]); int yOffset = Convert.ToInt32(clickCoordinatesArray[1]); Point point = new Point(xOffset, yOffset); OuterDriver.ClickEmulatorScreenPoint(point); Console.WriteLine("Coordinates: " + xOffset + " " + yOffset); responseBody = String.Empty; } break; case "buttondown": OuterDriver.ButtonDown(); break; case "buttonup": OuterDriver.ButtonUp(); break; case "keys": jsonValue = Parser.GetKeysString(content); if (jsonValue.Equals(ENTER)) OuterDriver.ClickEnter(); break; default: Console.WriteLine("Not proxying. Unimplemented"); responseBody = "Success"; break; } return responseBody; }
private String HandleRequest(AcceptedRequest acceptedRequest) { String responseBody = String.Empty; String request = acceptedRequest.request; String content = acceptedRequest.content; if (Parser.ShouldProxy(request)) responseBody = phoneRequester.SendRequest(Parser.GetRequestUrn(request), content); else responseBody = HandleLocalRequest(acceptedRequest); return responseBody; }