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); }
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)); } }
// Use this for initialization void Start() { taskManager = GameObject.FindWithTag("GameManager").GetComponent <TaskManager>(); anim = GetComponent <WorkerAnimationManager>(); delivery = GetComponent <DeliveryTask>(); construction = GetComponent <ConstructionTask>(); hasTask = false; }
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)); }
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; } } }
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); }
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); } }
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)); }
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)); }
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)); }
/// <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; } }
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(); }