public IActionResult EditOrder(int id, bool again = false)
        {
            //ovdje ide neki VM
            var order = _database.order.Include(i => i.OrderStatus).FirstOrDefault(s => s.OrderID == id);
            var User  = _database.user.Find(order.UserID);
            var model = new EditOrderVM {
                OrderID     = id,
                UserId      = order.UserID,
                OrderStatus = _database.orderstatus.Find(order.OrderStatusID).Status,
                OrderDate   = order.OrderDate.ToString(),
                UserInfo    = User.Name + " " + User.Surname + ", " + User.Adress + "| " + User.PhoneNumber,
                items       = _database.orderdetails.Include(i => i.Product).Where(w => w.OrderID == id).Select(o => new EditOrderVM.Products
                {
                    ProductID        = o.ProductID,
                    ProductName      = o.Product.ProductName,
                    RequiredQuantity = o.Quantity
                }).ToList(),
            };

            foreach (var x in model.items)
            {
                x.branches = _database.branchproduct.Include(b => b.Branch).Where(a => a.ProductID == x.ProductID && a.UnitsInBranch > 0).Select(s => new EditOrderVM.Products.Branches
                {
                    BranchID          = s.BranchID,
                    BranchName        = s.Branch.BranchName,
                    AvailableQuantity = s.UnitsInBranch ?? 0,
                    Input             = 0
                }).ToList();
            }
            if (again == true)
            {
                TempData["msg"] = "Raspodjela nije ispravna.Pokušajte ponovo !";
            }
            return(PartialView(model));
        }
Beispiel #2
0
        public IActionResult EditOrderFinal(EditOrderVM order)
        {
            List <Order> orders   = db.Orders.ToList();
            Order        newOrder = new Order()
            {
                OrderId = order.OrderId, CarName = order.CarName, ClientName = order.ClientName, Telephone = order.Telephone
            };

            foreach (Order o in orders)
            {
                if (o.OrderId == order.OrderId)
                {
                    db.Entry(o).CurrentValues.SetValues(newOrder);
                }
            }
            db.SaveChanges();

            List <Order> orders2 = db.Orders.ToList();
            OrderListVM  model   = new OrderListVM()
            {
                Orders = orders2
            };

            return(View("Index", model));
        }
Beispiel #3
0
        public ActionResult EditSetTaskAndDriverStopNumbers(int[] taskIDs, int?[] driverStopIDs)
        {
            EditOrderVM model = new EditOrderVM();

            model.TaskAndDriverStopNumbers = new List <AssignTaskAndDriverStopNumbersInOrderVM>();

            using (TruckTransportDbContext _db = new TruckTransportDbContext())
            {
                foreach (var taskID in taskIDs)
                {
                    AssignTaskAndDriverStopNumbersInOrderVM taskAndDriverStopNumberModel = new AssignTaskAndDriverStopNumbersInOrderVM();
                    var task = _db.zadaci.Where(x => x.zadatak_id == taskID).AsNoTracking().FirstOrDefault();

                    if (task != null)
                    {
                        taskAndDriverStopNumberModel.ID     = task.zadatak_id;
                        taskAndDriverStopNumberModel.Name   = task.naziv;
                        taskAndDriverStopNumberModel.IsTask = true;
                        taskAndDriverStopNumberModel.Number = task.broj_zadatka;

                        model.TaskAndDriverStopNumbers.Add(taskAndDriverStopNumberModel);
                    }
                }

                if (driverStopIDs != null)
                {
                    foreach (var driverStopID in driverStopIDs)
                    {
                        if (driverStopID != null)
                        {
                            AssignTaskAndDriverStopNumbersInOrderVM taskAndDriverStopNumberModel = new AssignTaskAndDriverStopNumbersInOrderVM();
                            var driverStopOrder = _db.stajalista_nalozi.Include(x => x.stajalista).Where(x => x.stajaliste_id == driverStopID).AsNoTracking().FirstOrDefault();

                            if (driverStopOrder != null)
                            {
                                taskAndDriverStopNumberModel.ID     = driverStopOrder.stajaliste_id;
                                taskAndDriverStopNumberModel.Name   = driverStopOrder.stajalista.naziv;
                                taskAndDriverStopNumberModel.IsTask = false;
                                taskAndDriverStopNumberModel.Number = driverStopOrder.broj_stajalista;

                                model.TaskAndDriverStopNumbers.Add(taskAndDriverStopNumberModel);
                            }
                            else
                            {
                                var driverStop = _db.stajalista.Where(x => x.stajaliste_id == driverStopID).AsNoTracking().FirstOrDefault();

                                taskAndDriverStopNumberModel.ID     = driverStop.stajaliste_id;
                                taskAndDriverStopNumberModel.Name   = driverStop.naziv;
                                taskAndDriverStopNumberModel.IsTask = false;
                                taskAndDriverStopNumberModel.Number = 1;

                                model.TaskAndDriverStopNumbers.Add(taskAndDriverStopNumberModel);
                            }
                        }
                    }
                }
            }

            return(PartialView(viewName: "_EditAssignTaskAndDriverStopNumbers", model: model));
        }
        public ActionResult Edit(EditOrderVM model)
        {
            var order = _orderService.GetOrder(model.Id);

            if (!ModelState.IsValid)
            {
                return(BuildModel(order, model));
            }
            _orderService.UpdateOrderStatus(order, model.Status);
            _notifier.Add(NotifyType.Information, T("The order has been saved"));
            return(RedirectToAction("ListOrders", "CustomerAdmin", new { id = order.CustomerId }));
        }
 public ActionResult Edit(EditOrderVM EOVM)
 {
     if (ModelState.IsValid)
     {
         Order existingorder = dbcontext.Orders.Find(EOVM.OrderId);
         existingorder.Quantity    = EOVM.Quantity;
         existingorder.OrderAmount = EOVM.Quantity * existingorder.ProductPrice;
         dbcontext.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(EOVM));
 }
 private dynamic BuildModel(OrderRecord order, EditOrderVM editModel)
 {
     return(Shape.Order(
                Order: order,
                Details: order.Details.Join(_bookRepository.Table, x => x.BookId, x => x.Id, (record, bookRecord) =>
                                            Shape.Detail
                                            (
                                                Sku: bookRecord.Sku,
                                                Price: bookRecord.UnitPrice,
                                                Quantity: record.Quantity,
                                                Total: record.Total()
                                            )).ToArray(),
                EditModel: editModel
                ));
 }
Beispiel #7
0
 private dynamic BuildModel(OrderRecord order, EditOrderVM editModel)
 {
     return(Shape.Order(
                Order: order,
                Details: order.Details.Join(_productRepository.Table, x => x.ProductId, x => x.Id, (record, productRecord) =>
                                            Shape.Detail
                                            (
                                                Sku: productRecord.Sku,
                                                Price: productRecord.Price,
                                                Quantity: record.Quantity,
                                                Total: record.Total,
                                                Size: record.Size
                                            )).ToArray(),
                EditModel: editModel
                ));
 }
        public IActionResult SaveOrderChanges(EditOrderVM model)
        {
            var order = _database.order.Find(model.OrderID);

            foreach (var x in model.items)
            {
                var a = 0;
                foreach (var y in x.branches)
                {
                    a += y.Input;
                    _database.branchproduct.FirstOrDefault(a => a.BranchID == y.BranchID && x.ProductID == a.ProductID).UnitsInBranch -= y.Input;
                }
                if (a != x.RequiredQuantity)
                {
                    return(Redirect("/Administration/EditOrder?id=" + model.OrderID + "&again=" + true));
                }
            }
            order.OrderStatusID = 2;
            order.OrderStatus   = _database.orderstatus.Find(2);
            order.ShipDate      = DateTime.Now;
            Notification nova = new Notification
            {
                UserID = order.UserID,
                Text   = "Vaša narudžba (" + model.OrderID + ") je isporučena."
            };

            Parallel.Invoke(() => Sms("Narudzba <" + model.OrderID + "> je isporucena."));
            _database.Add(nova);
            _database.Add(new AdminActivity
            {
                ActivityID     = 10,
                AdminID        = Int32.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)),
                DateOfActivity = DateTime.Now
            });

            _database.SaveChanges();
            foreach (var x in model.items)
            {
                if (_database.product.Find(x.ProductID).UnitsInStock == 0)
                {
                    Sms("Proizvod " + _database.product.Find(x.ProductID).ProductName + " (" + x.ProductID + ") vise nije dostupan.");
                }
            }
            return(PartialView("SuccessMessage"));
        }
Beispiel #9
0
        private dynamic BuildModel(OrderPart order, EditOrderVM editModel)
        {
            CustomerPart customer        = _customerService.GetCustomer(order.CustomerId);
            AddressPart  shipAddressPart = _customerService.GetShippingAddress(customer.Id, order.Id);
            AddressPart  custAddressPart = _customerService.GetInvoiceAddress(customer.Id);

            string shipName = string.Empty;

            if (shipAddressPart != null && !string.IsNullOrWhiteSpace(shipAddressPart.Name))
            {
                shipName = shipAddressPart.Name;
            }

            string shipAddress  = shipAddressPart == null ? "(same as Invoice Address)" : shipAddressPart.Address;
            string shipAddress2 = shipAddressPart == null ? string.Empty : shipAddressPart.City + " " + shipAddressPart.State + " " + shipAddressPart.Postcode;
            string shipCountry  = shipAddressPart == null ? string.Empty : shipAddressPart.Country;

            string custAddress  = custAddressPart.Address;
            string custAddress2 = custAddressPart.City + " " + custAddressPart.State + " " + custAddressPart.Postcode;
            string custCountry  = custAddressPart.Country;

            return(Shape.Order(
                       Order: order,
                       CustomerName: customer.FullName,
                       CustomerAddress1: custAddress,
                       CustomerAddress2: custAddress2,
                       CustomerCountry: custCountry,
                       ShippingName: shipName,
                       ShippingAddress1: shipAddress,
                       ShippingAddress2: shipAddress2,
                       ShippingCountry: shipCountry,
                       Details: null, // Convert the whole thing to use Part instead of Record
                       //Details: order.Details.Select( detail =>
                       //    Shape.Detail
                       //    (
                       //        Sku: detail.Sku,
                       //        Price: detail.UnitPrice,
                       //        Quantity: detail.Quantity,
                       //        Total: detail.Total,
                       //        Description: detail.Description
                       //    )).ToArray(),
                       EditModel: editModel
                       ));
        }
Beispiel #10
0
        public IActionResult EditOrder(int id)
        {
            List <Order> orders = db.Orders.ToList();
            EditOrderVM  model  = new EditOrderVM();

            foreach (Order o in orders)
            {
                if (o.OrderId == id)
                {
                    model = new EditOrderVM()
                    {
                        CarName = o.CarName, ClientName = o.ClientName, Telephone = o.Telephone, OrderId = id
                    };
                }
            }


            return(View("Edit", model));
        }
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Order order = dbcontext.Orders.Find(id);

            if (order == null || order.OrderStatus.ToLower() == "canceled")
            {
                return(HttpNotFound());
            }

            EditOrderVM EOVM = new EditOrderVM();

            EOVM.CustomerEmail = order.Customer.Email;
            EOVM.OrderId       = order.OrderId;
            EOVM.Quantity      = order.Quantity;
            return(View(EOVM));
        }
Beispiel #12
0
        public ActionResult Edit(EditOrderVM model)
        {
            if (model.TaskIDs != null && model.DriverStopIDs != null)
            {
                if (model.TaskIDs.Length > 10 || model.DriverStopIDs.Length > 10)
                {
                    ModelState.AddModelError("", "Broj zadataka i broj stajališta ne može biti veći od 10!");
                }
                else if (model.TaskAndDriverStopNumbers == null)
                {
                    ModelState.AddModelError("", "Redni brojevi za sve odabrane zadatke i stajališta nisu dodijeljeni!");
                }
                else if (model.TaskAndDriverStopNumbers != null && model.TaskIDs.Length + model.DriverStopIDs.Length > model.TaskAndDriverStopNumbers.Count)
                {
                    ModelState.AddModelError("", "Redni brojevi za sve odabrane zadatke i stajališta nisu dodijeljeni!");
                }
            }

            if (model.TaskIDs != null && model.DriverStopIDs == null)
            {
                if (model.TaskIDs.Length > 2)
                {
                    ModelState.AddModelError("", "Stajalište je obavezno ako je broj zadataka veći od 2!");
                }

                if (model.TaskAndDriverStopNumbers == null)
                {
                    ModelState.AddModelError("", "Redni brojevi za sve odabrane zadatke nisu dodijeljeni!");
                }
                else if (model.TaskIDs.Length > model.TaskAndDriverStopNumbers.Count)
                {
                    ModelState.AddModelError("", "Redni brojevi za sve odabrane zadatke nisu dodijeljeni!");
                }
            }

            //check difference between numbers in list
            if (model.TaskAndDriverStopNumbers != null)
            {
                if (model.TaskAndDriverStopNumbers.Count != 0)
                {
                    var descOrderedNumbers = model.TaskAndDriverStopNumbers.OrderByDescending(x => x.Number);

                    if (descOrderedNumbers.Last().Number != 1)
                    {
                        ModelState.AddModelError("", "Najmanji redni broj mora biti 1!");
                    }

                    int orderNumberErrorCounter = 0;

                    for (int i = 0; i < descOrderedNumbers.Count(); i++)
                    {
                        if (descOrderedNumbers.Count() > 1 && (i + 1) < descOrderedNumbers.Count())
                        {
                            int difference = descOrderedNumbers.ElementAt(i).Number - descOrderedNumbers.ElementAt(i + 1).Number;

                            if (difference != 1 && orderNumberErrorCounter == 0)
                            {
                                orderNumberErrorCounter = 1;
                                ModelState.AddModelError("", "Redni brojevi nisu ispravno raspoređeni. Razlika između dva broja mora biti 1!");
                            }
                        }
                    }
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    using (TruckTransportDbContext _db = new TruckTransportDbContext())
                    {
                        nalozi nalogDB = _db.nalozi.Where(x => x.nalog_id == model.OrderID).FirstOrDefault();

                        nalogDB.vrijeme_kreiranja = UnixTime.GetUnixTimeNow();
                        nalogDB.vozilo_id         = model.VehicleID;
                        nalogDB.vozac_id          = model.DriverID;

                        _db.Entry(nalogDB).State = EntityState.Modified;

                        var previousTaskList = _db.zadaci.Where(x => x.nalog_id == model.OrderID).ToList();

                        if (previousTaskList != null)
                        {
                            foreach (var previousTask in previousTaskList)
                            {
                                previousTask.nalog_id         = null;
                                _db.Entry(previousTask).State = EntityState.Modified;
                            }
                        }

                        foreach (var taskID in model.TaskIDs)
                        {
                            zadaci taskDB = _db.zadaci.Where(x => x.zadatak_id == taskID).FirstOrDefault();

                            if (taskDB != null)
                            {
                                taskDB.nalog_id         = nalogDB.nalog_id;
                                taskDB.broj_zadatka     = model.TaskAndDriverStopNumbers.Where(x => x.ID == taskDB.zadatak_id && x.IsTask).FirstOrDefault().Number;
                                _db.Entry(taskDB).State = EntityState.Modified;
                            }
                        }

                        var previousDriverStops = _db.stajalista_nalozi.Where(x => x.nalog_id == model.OrderID).ToList();

                        if (previousDriverStops != null)
                        {
                            _db.stajalista_nalozi.RemoveRange(previousDriverStops);
                        }

                        if (model.DriverStopIDs != null)
                        {
                            List <stajalista_nalozi> driverStopsOrders = new List <stajalista_nalozi>();

                            foreach (var driverStopID in model.DriverStopIDs)
                            {
                                stajalista_nalozi driverStopOrderDB = new stajalista_nalozi();
                                driverStopOrderDB.stajaliste_id   = (int)driverStopID;
                                driverStopOrderDB.nalog_id        = nalogDB.nalog_id;
                                driverStopOrderDB.broj_stajalista = model.TaskAndDriverStopNumbers.Where(x => x.ID == driverStopOrderDB.stajaliste_id && !x.IsTask).FirstOrDefault().Number;
                                driverStopsOrders.Add(driverStopOrderDB);
                            }

                            _db.stajalista_nalozi.AddRange(driverStopsOrders);
                        }

                        _db.SaveChanges();

                        return(RedirectToAction(actionName: "Index"));
                    }
                }
                catch (Exception)
                {
                }
            }

            model.Drivers  = _dropdownMaker.GetDrivers();
            model.Vehicles = _dropdownMaker.GetVehicles();

            model.Tasks       = _dropdownMaker.GetUnattachedAndSpecificOrderAttachedTasks(model.OrderID);
            model.DriverStops = _dropdownMaker.GetDriverStops();

            return(View(viewName: "Edit", model: model));
        }
Beispiel #13
0
        public ActionResult Edit(int orderID)
        {
            EditOrderVM model = new EditOrderVM();

            using (TruckTransportDbContext _db = new TruckTransportDbContext())
            {
                var order = _db.nalozi.Where(x => x.nalog_id == orderID).AsNoTracking().FirstOrDefault();

                if (order != null)
                {
                    var taskList       = _db.zadaci.Where(x => x.nalog_id == order.nalog_id).AsNoTracking().ToList();
                    var orderStopsList = _db.stajalista_nalozi.Where(x => x.nalog_id == order.nalog_id).ToList();

                    model.OrderID   = order.nalog_id;
                    model.DriverID  = order.vozac_id;
                    model.VehicleID = order.vozilo_id;

                    if (taskList != null)
                    {
                        model.TaskIDs = new int[taskList.Count];

                        for (int i = 0; i < taskList.Count; i++)
                        {
                            model.TaskIDs.SetValue(taskList[i].zadatak_id, i);
                        }
                    }

                    if (orderStopsList != null)
                    {
                        model.DriverStopIDs = new int?[orderStopsList.Count];

                        for (int i = 0; i < orderStopsList.Count; i++)
                        {
                            model.DriverStopIDs.SetValue(orderStopsList[i].stajaliste_id, i);
                        }
                    }
                }

                model.Drivers  = _dropdownMaker.GetDrivers();
                model.Vehicles = _dropdownMaker.GetVehicles();

                model.Tasks       = _dropdownMaker.GetUnattachedAndSpecificOrderAttachedTasks(orderID);
                model.DriverStops = _dropdownMaker.GetDriverStops();

                model.TaskAndDriverStopNumbers = new List <AssignTaskAndDriverStopNumbersInOrderVM>();

                foreach (var taskID in model.TaskIDs)
                {
                    AssignTaskAndDriverStopNumbersInOrderVM taskAndDriverStopNumberModel = new AssignTaskAndDriverStopNumbersInOrderVM();
                    var task = _db.zadaci.Where(x => x.zadatak_id == taskID).AsNoTracking().FirstOrDefault();

                    taskAndDriverStopNumberModel.ID     = task.zadatak_id;
                    taskAndDriverStopNumberModel.Name   = task.naziv;
                    taskAndDriverStopNumberModel.IsTask = true;
                    taskAndDriverStopNumberModel.Number = task.broj_zadatka;

                    model.TaskAndDriverStopNumbers.Add(taskAndDriverStopNumberModel);
                }

                if (model.DriverStopIDs != null)
                {
                    foreach (var driverStopID in model.DriverStopIDs)
                    {
                        if (driverStopID != null)
                        {
                            AssignTaskAndDriverStopNumbersInOrderVM taskAndDriverStopNumberModel = new AssignTaskAndDriverStopNumbersInOrderVM();
                            var driverStop = _db.stajalista_nalozi.Include(x => x.stajalista).Where(x => x.stajaliste_id == driverStopID).AsNoTracking().FirstOrDefault();

                            taskAndDriverStopNumberModel.ID     = driverStop.stajaliste_id;
                            taskAndDriverStopNumberModel.Name   = driverStop.stajalista.naziv;
                            taskAndDriverStopNumberModel.IsTask = false;
                            taskAndDriverStopNumberModel.Number = driverStop?.broj_stajalista ?? 0;

                            model.TaskAndDriverStopNumbers.Add(taskAndDriverStopNumberModel);
                        }
                    }
                }
            }

            return(View(viewName: "Edit", model: model));
        }
Beispiel #14
0
        public async Task <IActionResult> Edit(EditOrderVM orderVM)
        {
            //If / ModelState.IsValid dose not work
            try
            {
                var order = _context.Order
                            .Include(o => o.Items)
                            .SingleOrDefault(o => o.Id == orderVM.Id);
                order.Names       = orderVM.Names;
                order.Email       = orderVM.Email;
                order.PhoneNumber = orderVM.PhoneNumber;
                order.Address     = orderVM.Address;
                order.City        = orderVM.City;
                order.CompanyName = orderVM.CompanyName;
                order.CompanyEIK  = orderVM.CompanyEIK;
                order.Updated     = DateTime.Now;
                order.Status      = orderVM.Status;

                var removedOrderItems = order.Items
                                        .Where(x => !orderVM.OrderItems.Any(y => y.Id == x.Id))
                                        .ToList();

                foreach (var orderItem in removedOrderItems)
                {
                    order.Items.Remove(orderItem);
                }

                foreach (var orderItemVM in orderVM.OrderItems)
                {
                    var orderItem = order.Items.SingleOrDefault(or => or.Id == orderItemVM.Id);
                    if (orderItem == null)
                    {
                        var product = _context.Product.SingleOrDefault(p => p.Id == orderItemVM.ProductId);
                        if (product == null)
                        {
                            product = new Product()
                            {
                                Name = orderItemVM.Name,
                                CompatibilitySettings = new List <CompatibilitySetting>()
                            };
                            _context.Add(product);
                            //throw error
                            //_context.SaveChanges();
                        }
                        else
                        {
                            orderItem = new OrderItem()
                            {
                                ProductId   = product.Id,
                                Name        = product.Name,
                                Description = product.Description,
                                Price       = product.Price,
                                Quantity    = orderItemVM.Quantity
                            };
                            order.Items.Add(orderItem);
                        }
                    }
                    else
                    {
                        orderItem.Quantity = orderItemVM.Quantity;
                    }
                }

                _context.Update(order);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!OrderExists(orderVM.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(RedirectToAction("Index"));
        }