Exemple #1
0
        public ActionResult Create([Bind(Include = "OrderDate,BundleQuantity,MarketName,TrackNumber,Price,Invoice,Description,Category,Country,Valuta")] BundleCreateModel model)
        {
            Bundle bundle = null;
            string userId = null;

            if (ModelState.IsValid)
            {
                if (model.OrderDate > DateTime.Now || model.Invoice == null || model.Invoice.ContentLength < 0)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                try
                {
                    userId = User.Identity.GetUserId();
                    bundle = new Bundle();

                    bundle.Customer       = db.Users.Single(s => s.Id == userId);
                    bundle.MarketName     = model.MarketName;
                    bundle.Price          = model.Price;
                    bundle.TrackNumber    = model.TrackNumber;
                    bundle.Description    = model.Description;
                    bundle.BundleQuantity = model.BundleQuantity;
                    bundle.Category       = db.categories.Single(s => s.Id == model.Category);
                    bundle.Country        = db.countries.Single(s => s.Id == model.Country && s.isActive == true);
                    bundle.Valuta         = db.valutas.Single(s => s.Id == model.Valuta && s.isActive == true);
                    bundle.CreatedDate    = DateTime.Now;
                    bundle.OrderDate      = model.OrderDate;

                    bundle.addStatus(new Status
                    {
                        CreatedDate = DateTime.Now,
                        Name        = "ordered"
                    });
                    var fileExtension = Path.GetExtension(model.Invoice.FileName);
                    var fileName      = Path.GetFileNameWithoutExtension(model.Invoice.FileName) + "-" +
                                        DateTime.Now.ToString("yyyyMMddHHmmssfff") + fileExtension;
                    var fullpath      = Path.GetFullPath(Server.MapPath("/Img/Invoice/"));
                    var directoryName = fullpath + bundle.Customer.CustomerNumber;
                    Directory.CreateDirectory(directoryName);
                    var path = Path.Combine(Server.MapPath("/Img/Invoice/" + bundle.Customer.CustomerNumber), fileName);
                    model.Invoice.SaveAs(path);
                    bundle.InvoiceFilePath = "/Img/Invoice/" + bundle.Customer.CustomerNumber + "/" + fileName;
                    db.bundles.Add(bundle);
                    db.SaveChanges();
                }
                catch (Exception)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
                }
            }
            return(RedirectToAction("Index"));
        }
        public ActionResult AdminCreate([Bind(Include = "Orders,OrderDate,BundleQuantity,MarketName,TrackNumber,Price,Invoice,Description,Category,Country,Valuta")] BundleCreateModel model)
        {
            Bundle bundle = null;

            if (ModelState.IsValid)
            {
                if (model.OrderDate > DateTime.Now || model.Invoice.ContentLength < 0)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                try
                {
                    bundle = new Bundle();
                    List <Order> orders = db.orders.Where(w => w.BundleId == 0 && model.Orders.Contains(w.Id) && w.isPaid == true).ToList();
                    foreach (var item in orders)
                    {
                        if (item.customer.CustomerNumber != orders[0].customer.CustomerNumber ||
                            item.category.Id != orders[0].category.Id ||
                            item.country.Id != orders[0].country.Id)
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }
                    }

                    bundle.Customer       = orders[0].customer;
                    bundle.MarketName     = model.MarketName;
                    bundle.Price          = model.Price;
                    bundle.TrackNumber    = model.TrackNumber;
                    bundle.Description    = model.Description;
                    bundle.BundleQuantity = model.BundleQuantity;
                    bundle.Category       = db.categories.Single(s => s.Id == model.Category);
                    bundle.Country        = db.countries.Single(s => s.Id == model.Country && s.isActive == true);
                    bundle.Valuta         = db.valutas.Single(s => s.Id == model.Valuta && s.isActive == true);
                    bundle.CreatedDate    = model.OrderDate;

                    bundle.addStatus(new Status
                    {
                        CreatedDate = bundle.CreatedDate,
                        Name        = "ordered"
                    });
                    var fileExtension = Path.GetExtension(model.Invoice.FileName);
                    var fileName      = Path.GetFileNameWithoutExtension(model.Invoice.FileName) + "-" +
                                        DateTime.Now.ToString("yyyyMMdd_HHmmssfff") + fileExtension;
                    var fullpath      = Path.GetFullPath(Server.MapPath("/Img/Invoice/"));
                    var directoryName = fullpath + bundle.Customer.CustomerNumber;
                    Directory.CreateDirectory(directoryName);
                    var path = Path.Combine(Server.MapPath("/Img/Invoice/" + bundle.Customer.CustomerNumber), fileName);
                    model.Invoice.SaveAs(path);
                    bundle.InvoiceFilePath = "/Img/Invoice/" + bundle.Customer.CustomerNumber + "/" + fileName;
                    db.bundles.Add(bundle);
                    db.SaveChanges();
                    var readybundle = db.bundles.Single(s => s.TrackNumber == model.TrackNumber && s.CreatedDate == model.OrderDate && s.MarketName == model.MarketName);
                    foreach (var item in orders)
                    {
                        item.BundleId = readybundle.Id;
                    }
                    db.SaveChanges();
                }
                catch (Exception)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
                }
            }
            return(RedirectToAction("List", "Bundle"));
        }