public JsonResult OrderDelivered(string s)
        {
            int orderID = Convert.ToInt32(s);

            //change order status
            var order = orderRepo.GetById(orderID);

            order.DeliveredBy = User.Identity.Name;
            order.Status      = "Delivered";
            orderRepo.Save();

            // add log
            OrderLog log = new OrderLog();

            log.LogDetails = "Delivered";
            log.Order_Id   = orderID;
            log.AddedDate  = DateTime.Now;
            orderLogRepo.Insert(log);
            orderLogRepo.Save();

            // delete task
            DeliveryTask task = taskRepo.GetAll().Where(x => x.Order_Id == orderID).FirstOrDefault();

            taskRepo.Delete(task);
            taskRepo.Save();

            return(Json("Order Delivered", JsonRequestBehavior.AllowGet));
        }
        public static XtraReport GetDeliveryReport(DeliveryTask task, INextBOUnitOfWork unitOfWork)
        {
            List <DeliveryTask> list = new List <DeliveryTask>();

            foreach (var item in task.DeliveryImages)
            {
                item.ImageObj = string.IsNullOrEmpty(item.Image) ? null : Convert.FromBase64String(item.Image.Replace("data:image/jpeg;base64,", string.Empty).Replace("data:image/png;base64,", string.Empty));
            }
            task.DeliverySignatureObj = string.IsNullOrEmpty(task.DeliverySignature) ? null : Convert.FromBase64String(task.DeliverySignature.Replace("data:image/jpeg;base64,", string.Empty).Replace("data:image/png;base64,", string.Empty));
            list.Add(task);

            var report = ReportInfoFactory.GetReportbyName(GetStringValue(Next.Enums.Enums.Report.Entrega), list, unitOfWork);

            foreach (var item in report.Bands)
            {
                SetTaskReportDataMember((Band)item);

                if (item is DetailReportBand)
                {
                    foreach (var detail in ((DetailReportBand)item))
                    {
                        SetTaskReportDataMember((Band)detail);
                    }
                }
            }
            return(report);
        }
Ejemplo n.º 3
0
        public IHttpActionResult PutDeliveryTask([FromUri] int id, [FromUri] int tid, [FromBody] DeliveryTask task)
        {
            var item = context.DeliveryMans.Find(id).DeliveryTasks.Where(x => x.Id == tid).FirstOrDefault();

            if (item == null)
            {
                return(StatusCode(HttpStatusCode.NoContent));
            }
            else
            {
                //item.Id = tid;
                //item.Order_Id = task.Order_Id;
                //item.DeliveryMan_Id = task.DeliveryMan_Id;
                item.Status    = task.Status;
                item.AddedDate = task.AddedDate;
                item.TimeTaken = task.TimeTaken;


                DeliveryTask t = new DeliveryTask();
                t.Id             = item.Id;
                t.Order_Id       = item.Order_Id;
                t.DeliveryMan_Id = item.DeliveryMan_Id;
                t.Status         = item.Status;
                task.AddedDate   = item.AddedDate;
                task.TimeTaken   = item.TimeTaken;


                context.SaveChanges();

                return(Ok(t));
            }
        }
Ejemplo n.º 4
0
 // Use this for initialization
 void Start()
 {
     taskManager  = GameObject.FindWithTag("GameManager").GetComponent <TaskManager>();
     anim         = GetComponent <WorkerAnimationManager>();
     delivery     = GetComponent <DeliveryTask>();
     construction = GetComponent <ConstructionTask>();
     hasTask      = false;
 }
Ejemplo n.º 5
0
        public IHttpActionResult PostDeliveryTask([FromUri] int id, DeliveryTask task)
        {
            task.DeliveryMan_Id = id;
            context.DeliveryTasks.Add(task);
            context.SaveChanges();

            return(Created(Url.Link("GetDeliverTaskById", new { id = task.DeliveryMan_Id, tid = task.Id }), task));
        }
Ejemplo n.º 6
0
        private void UpdateJobForce(OrderModel order)
        {
            // Checking whether the new orders are okay or not
            job.Order.Description = order.Description;
            (job.Order as DeliveryOrder).NoteToDeliveryMan = (order as DeliveryOrder).NoteToDeliveryMan;
            (job.Order as DeliveryOrder).RequiredChangeFor = (order as DeliveryOrder).RequiredChangeFor;
            job.Order.ETA        = order.ETA;
            job.Order.ETAMinutes = order.ETAMinutes;

            if (order.Type == OrderTypes.ClassifiedDelivery)
            {
                (job.Order as ClassifiedDeliveryOrder).BuyerInfo  = (order as ClassifiedDeliveryOrder).BuyerInfo;
                (job.Order as ClassifiedDeliveryOrder).SellerInfo = (order as ClassifiedDeliveryOrder).SellerInfo;
            }

            CompareLogic compareLogic = new CompareLogic();

            compareLogic.Config.ComparePrivateFields = true;

            job.Order.From = order.From;
            job.Order.To   = order.To;

            job.Order.OrderCart = order.OrderCart;

            var orderCartComparisonResult = compareLogic.Compare(job.Order.OrderCart, order.OrderCart);

            // TODO: The reason Im keeping all the order comparison result is to invoke a job activity notification from it

            // INFO: Yes, this is stupid. Fetching all the Tasks and updating them
            foreach (var task in job.Tasks)
            {
                switch (task.Type)
                {
                case JobTaskTypes.FETCH_DELIVERYMAN:
                    FetchDeliveryManTask fetchDeliveryManTask = task as FetchDeliveryManTask;
                    fetchDeliveryManTask.From = order.From;
                    fetchDeliveryManTask.To   = order.To;
                    break;

                case JobTaskTypes.PACKAGE_PICKUP:
                    PackagePickUpTask pickUpTask = task as PackagePickUpTask;
                    pickUpTask.PickupLocation = order.From;
                    break;

                case JobTaskTypes.SECURE_DELIVERY:
                case JobTaskTypes.DELIVERY:
                    DeliveryTask deliveryTask = task as DeliveryTask;
                    deliveryTask.From = order.From;
                    deliveryTask.To   = order.To;
                    break;
                }
            }
        }
Ejemplo n.º 7
0
        public override void BuildJob()
        {
            // FIXME: Looks like I can definitely refactor this and work this out

            job.Tasks = new List<JobTask>();

            // INFO: Fetching to 
            FetchDeliveryManTask fetchDeliveryManTask = new FetchDeliveryManTask(order.From, order.To);
            job.Tasks.Add(fetchDeliveryManTask);
            fetchDeliveryManTask.AssetUpdated += JobTask_AssetUpdated;

            PackagePickUpTask pickUpTask = new PackagePickUpTask(order.From);
            pickUpTask.SetPredecessor(fetchDeliveryManTask);
            job.Tasks.Add(pickUpTask);
            pickUpTask.AssetUpdated += JobTask_AssetUpdated;

            DeliveryTask deliveryTask = new DeliveryTask(order.From, order.To);
            deliveryTask.SetPredecessor(pickUpTask);
            job.Tasks.Add(deliveryTask);
            deliveryTask.AssetUpdated += JobTask_AssetUpdated;

            if (order.Type == OrderTypes.ClassifiedDelivery && order.Variant == DeliveryOrderVariants.Default)
            {
                SecureDeliveryTask secureDeliveryTask = new SecureDeliveryTask(order.To, order.From);
                secureDeliveryTask.SetPredecessor(deliveryTask);
                job.Tasks.Add(secureDeliveryTask);
                secureDeliveryTask.AssetUpdated += JobTask_AssetUpdated;

                job.TerminalTask = secureDeliveryTask;
            }
            else if (
                (order.Type == OrderTypes.ClassifiedDelivery && order.Variant == DeliveryOrderVariants.EnterpriseDelivery)
                || order.Type == OrderTypes.Delivery)
            {
                job.TerminalTask = deliveryTask;
            }

            job.PaymentMethod = this.paymentMethod.Key;
            job.PaymentStatus = PaymentStatus.Pending;

            job.EnsureJobTaskChangeEventsRegistered();

            job.EnsureTaskAssetEventsAssigned();

            if (order.JobTaskETAPreference?.Count > 0)
                SetupJobTaskETAs(order);
        }
Ejemplo n.º 8
0
        public override void BuildJob()
        {
            // FIXME: Looks like I can definitely refactor this and work this out

            job.Tasks = new List <JobTask>();

            // INFO: Fetching to
            FetchDeliveryManTask fetchDeliveryManTask = new FetchDeliveryManTask(order.From, order.To);

            job.Tasks.Add(fetchDeliveryManTask);

            PackagePickUpTask pickUpTask = new PackagePickUpTask(order.From);

            pickUpTask.SetPredecessor(fetchDeliveryManTask);
            job.Tasks.Add(pickUpTask);

            DeliveryTask deliveryTask = new DeliveryTask(order.From, order.To);

            deliveryTask.SetPredecessor(pickUpTask);
            job.Tasks.Add(deliveryTask);

            if (order.Type == OrderTypes.ClassifiedDelivery && order.Variant == DeliveryOrderVariants.Default)
            {
                SecureDeliveryTask secureDeliveryTask = new SecureDeliveryTask(order.To, order.From);
                secureDeliveryTask.SetPredecessor(deliveryTask);
                job.Tasks.Add(secureDeliveryTask);

                job.TerminalTask = secureDeliveryTask;
            }
            else if (
                (order.Type == OrderTypes.ClassifiedDelivery && order.Variant == DeliveryOrderVariants.EnterpriseDelivery) ||
                order.Type == OrderTypes.Delivery)
            {
                job.TerminalTask = deliveryTask;
            }

            job.PaymentMethod = this.paymentMethod.Key;
            job.PaymentStatus = PaymentStatus.Pending;

            job.EnsureJobTaskChangeEventsRegistered();

            if (order.JobTaskETAPreference?.Count > 0)
            {
                SetupJobTaskETAs(order);
            }
        }
Ejemplo n.º 9
0
        public IHttpActionResult GetDeliverytasks([FromUri] int id)
        {
            var list = context.DeliveryMans.Find(id).DeliveryTasks;

            if (list.Count() == 0)
            {
                return(StatusCode(HttpStatusCode.NoContent));
            }

            List <DeliveryTask> tasklist = new List <DeliveryTask>();

            foreach (var item in list)
            {
                DeliveryTask task = new DeliveryTask();
                task.Id             = item.Id;
                task.DeliveryMan_Id = item.DeliveryMan_Id;
                task.Order_Id       = item.Order_Id;
                task.Status         = item.Status;
                task.AddedDate      = item.AddedDate;
                task.TimeTaken      = item.TimeTaken;

                task.links.Add(new Links()
                {
                    HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks", Method = "GET", Rel = "All DeliveryTask for deliveryMan ID: " + id
                });
                task.links.Add(new Links()
                {
                    HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks/" + task.Id, Method = "GET", Rel = "Specific DeliveryTask For deliveryMan ID: " + id
                });
                task.links.Add(new Links()
                {
                    HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks/" + task.Id, Method = "PUT", Rel = "DeliveryTask Edit For deliveryMan ID: " + id
                });
                task.links.Add(new Links()
                {
                    HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks/" + task.Id, Method = "DELETE", Rel = "DeliveryTask Delete For deliveryMan ID: " + id
                });
                task.links.Add(new Links()
                {
                    HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks", Method = "POST", Rel = "DeliveryTask Create For deliveryMan ID:" + id
                });

                tasklist.Add(task);
            }
            return(Ok(tasklist));
        }
Ejemplo n.º 10
0
        public IHttpActionResult GetDeliverTaskById([FromUri] int id, [FromUri] int tid)
        {
            var item = context.DeliveryMans.Find(id).DeliveryTasks.ToList().Where(x => x.Id == tid).FirstOrDefault();

            if (item == null)
            {
                return(StatusCode(HttpStatusCode.NoContent));
            }

            DeliveryTask task = new DeliveryTask();

            task.Id             = item.Id;
            task.DeliveryMan_Id = item.DeliveryMan_Id;
            task.Order_Id       = item.Order_Id;
            task.Status         = item.Status;
            task.AddedDate      = item.AddedDate;
            task.TimeTaken      = item.TimeTaken;

            task.links.Add(new Links()
            {
                HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks", Method = "GET", Rel = "All DeliveryTask for deliveryMan ID: " + id
            });
            task.links.Add(new Links()
            {
                HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks/" + task.Id, Method = "GET", Rel = "Specific DeliveryTask For deliveryMan ID: " + id
            });
            task.links.Add(new Links()
            {
                HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks/" + task.Id, Method = "PUT", Rel = "DeliveryTask Edit For deliveryMan ID: " + id
            });
            task.links.Add(new Links()
            {
                HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks/" + task.Id, Method = "DELETE", Rel = "DeliveryTask Delete For deliveryMan ID: " + id
            });
            task.links.Add(new Links()
            {
                HRef = "http://localhost:56991/api/deliverymans/" + id + "/deliverytasks", Method = "POST", Rel = "DeliveryTask Create For deliveryMan ID:" + id
            });

            return(Ok(task));
        }
Ejemplo n.º 11
0
        public JsonResult SaveOrder(string s, string del)
        {
            int orderId = Convert.ToInt32(s);
            var order   = orderRepo.GetById(orderId);

            order.Status = "Assigned";

            orderRepo.Save();

            // save log
            DateTime dateTime = DateTime.Today;
            OrderLog log      = new OrderLog();

            log.Order_Id   = order.Id;
            log.LogDetails = "Assigned";
            log.AddedDate  = dateTime;
            orderLogRepo.Insert(log);
            orderLogRepo.Save();

            //save delivery task
            DeliveryTask task             = new DeliveryTask();
            int          delivermanUserId = userRepo.GetAll().Where(x => x.Email == del).FirstOrDefault().Id;
            int          delID            = deliverymanRepo.GetAll().Where(x => x.User_Id == delivermanUserId).FirstOrDefault().Id;

            task.Order_Id       = orderId;
            task.DeliveryMan_Id = delID;
            task.AddedDate      = dateTime;
            task.Status         = "Assigned";
            //int days =  Convert.ToInt32((dateTime - order.AddedDate).TotalDays);
            task.TimeTaken = order.AddedDate;

            taskRepo.Insert(task);
            taskRepo.Save();


            return(Json("Task Assigned Successfully", JsonRequestBehavior.AllowGet));
        }
        public JsonResult ReturnOrder(string s)
        {
            // change order status
            int orderID = Convert.ToInt32(s);
            var order   = orderRepo.GetById(orderID);

            order.Status      = "Returned";
            order.DeliveredBy = "";
            orderRepo.Save();

            //delete delivery task
            DeliveryTask task = taskRepo.GetAll().Where(x => x.Order_Id == orderID).FirstOrDefault();

            taskRepo.Delete(task);
            taskRepo.Save();

            //order log update
            OrderLog log = new OrderLog();

            log.LogDetails = "Returned";
            log.Order_Id   = orderID;
            log.AddedDate  = DateTime.Now;
            orderLogRepo.Insert(log);
            orderLogRepo.Save();

            var list = orderRepo.GetById(orderID).OrderDatas;

            //book returned and update physical stock
            foreach (var item in list)
            {
                var stock = stockRepo.GetAll().Where(x => x.Book_Id == item.Book_Id).FirstOrDefault();
                stock.PhysicalStock += item.QuantityOrdered;
                stockRepo.Save();
            }

            return(Json("Order Returned", JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Insert a task right after a index in the Tasks list or add in the end
        /// </summary>
        /// <param name="job">Referenced job to be considered with</param>
        /// <param name="index">Index the the new task will be inserted after if possible</param>
        /// <param name="newDeliveryTask">New task to insert</param>
        private static void InsertTaskIntoTaskChain(Data.Entity.Job job, int index, DeliveryTask newDeliveryTask)
        {
            // First, making sure there are no retry tasks after this.
            // The reason we are doing this is since someone might make the initial delivery task
            // set to in progress after he set it to returned or failed which will end in a
            // sticky situation

            var tasksToDelete = new List <JobTask>();

            for (int i = index + 1; i < job.Tasks.Count; i++)
            {
                if (job.Tasks[i].Type == JobTaskTypes.DELIVERY && job.Tasks[i].Variant == DeliveryTaskVariants.Retry)
                {
                    tasksToDelete.Add(job.Tasks[i]);
                }
            }

            foreach (var task in tasksToDelete)
            {
                job.Tasks.Remove(task);
            }

            if (index < job.Tasks.Count - 1)
            {
                // this means this task is not a terminating task
                job.Tasks[index + 1].SetPredecessor(newDeliveryTask, validateDependency: false);
                // Push the job after the delivery task itself.
                job.AddTask(newDeliveryTask, index + 1, hookPropertyChangedEvent: true);
            }
            else
            {
                // This was the last job task, so just adding the new task will suffice
                job.AddTask(newDeliveryTask, hookPropertyChangedEvent: true);
                job.TerminalTask = newDeliveryTask;
            }
        }
Ejemplo n.º 14
0
        private void UpdateJobSmart(OrderModel order)
        {
            if (job.State >= JobState.COMPLETED)
            {
                throw new NotSupportedException("Updating order of a completed/cancelled job is not supported");
            }

            // Checking whether the new orders are okay or not
            job.Order.Description = order.Description;
            (job.Order as DeliveryOrder).NoteToDeliveryMan = (order as DeliveryOrder).NoteToDeliveryMan;
            (job.Order as DeliveryOrder).RequiredChangeFor = (order as DeliveryOrder).RequiredChangeFor;
            job.Order.ETA        = order.ETA;
            job.Order.ETAMinutes = order.ETAMinutes;

            if (order.Type == OrderTypes.ClassifiedDelivery)
            {
                (job.Order as ClassifiedDeliveryOrder).BuyerInfo  = (order as ClassifiedDeliveryOrder).BuyerInfo;
                (job.Order as ClassifiedDeliveryOrder).SellerInfo = (order as ClassifiedDeliveryOrder).SellerInfo;
            }

            CompareLogic compareLogic = new CompareLogic();

            compareLogic.Config.ComparePrivateFields = true;

            var orderCartComparisonResult = compareLogic.Compare(job.Order.OrderCart, order.OrderCart);

            // Fetching the job task that is currently in progress
            var    jobTaskCurrentlyInProgress = job.Tasks.FirstOrDefault(x => x.State == JobTaskState.IN_PROGRESS);
            string firstJobTaskTypeToUpdate   = null;

            // Usually this jobTask depicts the state of the JOB itself
            // And this definitely needs refactoring mama
            if (jobTaskCurrentlyInProgress == null && job.State > JobState.ENQUEUED)
            {
                throw new NotSupportedException("No job task is currently in progress, this job is probably close to finished");
            }
            else if (jobTaskCurrentlyInProgress == null && job.State == JobState.ENQUEUED)
            {
                firstJobTaskTypeToUpdate = JobTaskTypes.FETCH_DELIVERYMAN;
            }
            else if (jobTaskCurrentlyInProgress != null)
            {
                firstJobTaskTypeToUpdate = jobTaskCurrentlyInProgress.Type;
            }

            if (firstJobTaskTypeToUpdate == JobTaskTypes.SECURE_DELIVERY)
            {
                throw new NotSupportedException("Cant update order when secure delivery is in progress");
            }

            switch (firstJobTaskTypeToUpdate)
            {
            case JobTaskTypes.FETCH_DELIVERYMAN:
                FetchDeliveryManTask fetchDeliveryManTask = job.Tasks.First() as FetchDeliveryManTask;
                fetchDeliveryManTask.From  = order.From;
                fetchDeliveryManTask.To    = order.To;
                fetchDeliveryManTask.State = JobTaskState.PENDING;
                goto case JobTaskTypes.PACKAGE_PICKUP;

            case JobTaskTypes.PACKAGE_PICKUP:
                PackagePickUpTask pickUpTask = job.Tasks[1] as PackagePickUpTask;
                pickUpTask.PickupLocation = order.From;
                pickUpTask.State          = JobTaskState.PENDING;

                if (!orderCartComparisonResult.AreEqual)
                {
                    job.Order.OrderCart = order.OrderCart;
                }
                goto case JobTaskTypes.DELIVERY;

            case JobTaskTypes.SECURE_DELIVERY:
            case JobTaskTypes.DELIVERY:
                DeliveryTask deliveryTask = job.Tasks[2] as DeliveryTask;
                deliveryTask.From  = order.From;
                deliveryTask.To    = order.To;
                deliveryTask.State = JobTaskState.PENDING;

                job.Order.From = order.From;
                job.Order.To   = order.To;
                break;
            }
        }
 public User UpdateTask(DeliveryTask task)
 {
     throw new NotImplementedException();
 }