Exemple #1
0
        //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"
            }));
        }
Exemple #3
0
        //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));
        }
Exemple #6
0
        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();
            }
        }
Exemple #9
0
        //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;
        }