示例#1
0
        public ActionResult Add(int partID = 0, string shortDesc = "", int status = 0, string oldPartNumber = "", int priceCode = 0, int classID = 0, string btnSubmit = "", string btnContinue = "", string upc = "", bool featured = false, int? ACESPartTypeID = null)
        {
            CurtDevDataContext db = new CurtDevDataContext();
            List<string> error_messages = new List<string>();
            Part new_part = new Part{
                    partID = partID,
                    shortDesc = shortDesc,
                    status = status,
                    oldPartNumber = oldPartNumber,
                    priceCode = priceCode,
                    classID = classID,
                    dateAdded = DateTime.Now,
                    dateModified = DateTime.Now,
                    featured = featured,
                    ACESPartTypeID = ACESPartTypeID
            };

            // Validate the partID and shortDesc fields
            if(partID == 0){ error_messages.Add("You must enter a part number."); }
            if(shortDesc.Length == 0){ error_messages.Add("You must enter a short description."); }
            if (upc.Trim().Length == 0) { error_messages.Add("You must enter a UPC."); }

            int existing_part = 0;
            // Make sure we don't have a product with this partID
            existing_part = (from p in db.Parts
                             where p.partID.Equals(partID)
                             select p).Count();
            if (existing_part != 0) { error_messages.Add("This part number exists."); }

            if (error_messages.Count == 0) { // No errors, add the part
                try {

                    db.Parts.InsertOnSubmit(new_part);
                    db.SubmitChanges();

                    ProductModels.SaveAttribute(0,new_part.partID, "UPC", upc);

                    db.indexPart(new_part.partID);

                    if (btnContinue != "") { // Redirect to add more part information
                        return RedirectToAction("edit", new { partID = new_part.partID });
                    } else { // Redirect to product index page
                        return RedirectToAction("index");
                    }
                } catch (Exception e) {
                    error_messages.Add(e.Message);
                }
            }

            ViewBag.error_messages = error_messages;

            // Get all the parts in the database :: This will allow the user to create related parts
            ViewBag.parts = ProductModels.GetAllParts();

            // Get the product classes
            ViewBag.classes = ProductModels.GetClasses();

            return View();
        }
示例#2
0
        public ActionResult Edit(int partID = 0, string shortDesc = "", int status = 0, string oldPartNumber = "", int priceCode = 0, int classID = 0, string btnSubmit = "", string btnContinue = "", string upc = "", bool featured = false, int? ACESPartTypeID = null)
        {
            CurtDevDataContext db = new CurtDevDataContext();
            List<string> error_messages = new List<string>();
            Part part = new Part();

            part = (from p in db.Parts
                    where p.partID.Equals(partID)
                    select p).FirstOrDefault<Part>();
            part.partID = partID;
            part.shortDesc = shortDesc;
            part.status = status;
            if (status == 900) {
                // find eMAP pricing and set enforced = 0
                Price eMapPrice = db.Prices.Where(x => x.priceType == "eMap" && x.partID == partID).FirstOrDefault<Price>();
                if (eMapPrice != null) {
                    eMapPrice.enforced = false;
                    eMapPrice.dateModified = DateTime.Now;
                    db.SubmitChanges();
                }
            }
            part.oldPartNumber = oldPartNumber;
            part.priceCode = priceCode;
            part.classID = classID;
            part.dateModified = DateTime.Now;
            part.featured = featured;
            part.ACESPartTypeID = ACESPartTypeID;

            // Validate the partID and shortDesc fields
            if (partID == 0) { error_messages.Add("You must enter a part number."); }
            if (shortDesc.Length == 0) { error_messages.Add("You must enter a short description."); }
            if (upc.Trim().Length == 0) { error_messages.Add("You must enter a UPC."); }

            if (error_messages.Count == 0) { // No errors, add the part
                try {
                    db.SubmitChanges();

                    if (ProductModels.HasAttribute(partID, "UPC")) {
                        ProductModels.UpdateAttributeByField(partID, "UPC", upc);
                    } else {
                        ProductModels.SaveAttribute(0,partID, "UPC", upc);
                    }

                    db.indexPart(part.partID);

                    if(btnSubmit != ""){ // Redirect to product index page
                        return RedirectToAction("index");
                    }
                } catch (Exception e) {
                    error_messages.Add(e.Message);
                }
            }

            // Save the error messages into the bag
            ViewBag.error_messages = error_messages;

            // Get the ConvertedPart version of this part object
            ViewBag.part = ProductModels.GetPart(part.partID);
            ViewBag.UPC = ProductModels.GetAttribute(part.partID, "UPC");

            // Get the product classes
            ViewBag.classes = ProductModels.GetClasses();

            ViewBag.PartTypes = new ACES().GetPartTypes();

            ViewBag.active_tab = "info";
            return View();
        }
示例#3
0
        public string Clone(int partID = 0, int newPartID = 0, string upc = "", bool categories = false, bool relatedParts = false, bool attributes = false, bool content = false, bool vehicles = false, bool prices = false)
        {
            CurtDevDataContext db = new CurtDevDataContext();
            List<string> messages = new List<string>();
            // Validate the partID and shortDesc fields
            if (partID == 0) { messages.Add("You must enter a part number."); }
            if (newPartID == 0) { messages.Add("You must enter a part number."); }
            if (upc.Trim().Length == 0) { messages.Add("You must enter a UPC."); }

            int existing_part = 0;
            // Make sure we don't have a product with this partID
            existing_part = (from p in db.Parts
                             where p.partID.Equals(newPartID)
                             select p).Count();
            if (existing_part != 0) { messages.Add("This part number exists."); }

            #region clone part
            if (messages.Count == 0) { // No errors, add the part
                try {
                    ConvertedPart cp = ProductModels.GetPart(partID);
                    Part new_part = new Part {
                        partID = newPartID,
                        classID = cp.pClass,
                        dateAdded = DateTime.Now,
                        dateModified = DateTime.Now,
                        featured = cp.featured,
                        oldPartNumber = cp.oldPartNumber,
                        priceCode = cp.priceCode,
                        shortDesc = cp.shortDesc,
                        status = cp.status,
                        ACESPartTypeID = cp.ACESPartTypeID
                    };
                    db.Parts.InsertOnSubmit(new_part);
                    db.SubmitChanges();
                    messages.Add("Part Added Successfully");

                    try {
                        ProductModels.SaveAttribute(0,new_part.partID, "UPC", upc);
                        messages.Add("UPC Added Successfully");
                    } catch (Exception e) {
                        messages.Add(e.Message);
                    }

                    #region clone categories
                    if (categories) {
                        try {
                            List<CatParts> new_catparts = new List<CatParts>();
                            List<int> catparts = db.CatParts.Where(x => x.partID == partID).Select(x => x.catID).Distinct().ToList();
                            foreach (int catpart in catparts) {
                                CatParts ncp = new CatParts {
                                    catID = catpart,
                                    partID = new_part.partID
                                };
                                new_catparts.Add(ncp);
                            }
                            db.CatParts.InsertAllOnSubmit(new_catparts);
                            db.SubmitChanges();
                            messages.Add("Categories Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the categories.");
                        }
                    }
                    #endregion

                    #region clone Related Parts
                    if (relatedParts) {
                        try {
                            List<RelatedPart> new_relparts = new List<RelatedPart>();
                            List<RelatedPart> relparts = db.RelatedParts.Where(x => x.partID == partID).ToList<RelatedPart>();
                            foreach (RelatedPart relpart in relparts) {
                                RelatedPart nrp = new RelatedPart {
                                    relatedID = relpart.relatedID,
                                    rTypeID = relpart.rTypeID,
                                    partID = new_part.partID
                                };
                                new_relparts.Add(nrp);
                            }
                            db.RelatedParts.InsertAllOnSubmit(new_relparts);
                            db.SubmitChanges();
                            messages.Add("Related Parts Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the related parts.");
                        }
                    }
                    #endregion

                    #region clone Attributes
                    if (attributes) {
                        try {
                            List<PartAttribute> new_attrs = new List<PartAttribute>();
                            List<PartAttribute> attributelist = db.PartAttributes.Where(x => x.partID == partID).Where(x => x.field.ToLower() != "upc").ToList<PartAttribute>();
                            foreach (PartAttribute attribute in attributelist) {
                                PartAttribute attr = new PartAttribute {
                                    value = attribute.value,
                                    field = attribute.field,
                                    partID = new_part.partID,
                                    sort = attribute.sort
                                };
                                new_attrs.Add(attr);
                            }
                            db.PartAttributes.InsertAllOnSubmit(new_attrs);
                            db.SubmitChanges();
                            messages.Add("Attributes Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the attributes.");
                        }
                    }
                    #endregion

                    #region clone Content
                    if (content) {
                        try {
                            List<ContentBridge> new_content = new List<ContentBridge>();
                            List<ContentBridge> contents = (from cb in db.ContentBridges
                                                            where cb.partID == partID
                                                            select cb).ToList<ContentBridge>();
                            foreach (ContentBridge cont in contents) {
                                Content c = db.Contents.Where(x => x.contentID.Equals(cont.contentID)).FirstOrDefault();
                                Content new_c = new Content {
                                    cTypeID = c.cTypeID,
                                    text = c.text
                                };
                                db.Contents.InsertOnSubmit(new_c);
                                db.SubmitChanges();
                                ContentBridge cb = new ContentBridge {
                                        partID = new_part.partID,
                                        contentID = new_c.contentID
                                };
                                db.ContentBridges.InsertOnSubmit(cb);
                                db.SubmitChanges();
                            }
                            messages.Add("Contents Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the contents.");
                        }
                    }
                    #endregion

                    #region clone Vehicles
                    if (vehicles) {
                        try {
                            List<VehiclePart> vehiclelist = db.VehicleParts.Where(x => x.partID == partID).ToList<VehiclePart>();
                            foreach (VehiclePart vp in vehiclelist) {
                                VehiclePart vehiclepart = new VehiclePart {
                                    partID = new_part.partID,
                                    vehicleID = vp.vehicleID,
                                    drilling = vp.drilling,
                                    installTime = vp.installTime,
                                    exposed = vp.exposed
                                };
                                db.VehicleParts.InsertOnSubmit(vehiclepart);
                                db.SubmitChanges();

                                List<VehiclePartAttribute> new_vpattr = new List<VehiclePartAttribute>();
                                List<VehiclePartAttribute> vpattrs = db.VehiclePartAttributes.Where(x => x.vPartID == vp.vPartID).ToList<VehiclePartAttribute>();
                                foreach (VehiclePartAttribute vpa in vpattrs) {
                                    VehiclePartAttribute new_vpa = new VehiclePartAttribute {
                                        vPartID = vehiclepart.vPartID,
                                        value = vpa.value,
                                        field = vpa.field,
                                        sort = vpa.sort
                                    };
                                    new_vpattr.Add(new_vpa);
                                };
                                db.VehiclePartAttributes.InsertAllOnSubmit(new_vpattr);
                                db.SubmitChanges();
                                messages.Add("Vehicles Cloned Successfully");
                            }
                        } catch {
                            messages.Add("There was a problem cloning the vehicles.");
                        }
                    }
                    #endregion

                    #region clone Prices
                    if (prices) {
                        try {
                            List<Price> new_prices = new List<Price>();
                            List<Price> pricelist = db.Prices.Where(x => x.partID == partID).ToList<Price>();
                            foreach (Price prc in pricelist) {
                                Price price = new Price {
                                    priceType = prc.priceType,
                                    price1 = prc.price1,
                                    partID = new_part.partID,
                                    enforced = prc.enforced
                                };
                                new_prices.Add(price);
                            }
                            db.Prices.InsertAllOnSubmit(new_prices);
                            db.SubmitChanges();
                            messages.Add("Prices Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the prices.");
                        }
                    }
                    #endregion

                    ImportImages(new_part.partID);

                    db.indexPart(new_part.partID);
                    messages.Add("Part Cloned Successfully.");

                } catch (Exception e) {
                    messages.Add(e.Message);
                }
            } else {
                messages.Add("Part Clone Failed.");
            }
            #endregion

            return Newtonsoft.Json.JsonConvert.SerializeObject(messages);
        }
示例#4
0
        public static string DeleteVehiclePartAttribute(int attrID = 0)
        {
            try {
                // Validate
                if (attrID <= 0) { throw new Exception("Attribute ID is invalid."); }

                // Variable Declaration
                CurtDevDataContext db = new CurtDevDataContext();
                VehiclePartAttribute vpa = new VehiclePartAttribute();

                vpa = (from p in db.VehiclePartAttributes
                      where p.vpAttrID.Equals(attrID)
                      select p).FirstOrDefault<VehiclePartAttribute>();
                int pid = vpa.vPartID;
                db.VehiclePartAttributes.DeleteOnSubmit(vpa);
                db.SubmitChanges();
                updateVehicleAttributeSort(getVehiclePartAttributeIDs(pid));
                db.indexPart(vpa.VehiclePart.partID);
                UpdatePart(vpa.VehiclePart.partID);
                return "";
            } catch (Exception e) {
                return e.Message;
            }
        }
示例#5
0
        public static PartAttribute SaveAttribute(int attrID = 0, int partID = 0, string field = "", string value = "")
        {
            // Validate fields
            if (partID <= 0) { throw new Exception("Part ID is invalid."); }
            if (field.Length <= 0) { throw new Exception("Field is invalid."); }
            if (value.Length <= 0) { throw new Exception("Value is invalid."); }
            if (field.ToUpper() == "UPC") { // Validate UPC
                if (!ValidateUPC(value)) {
                    throw new Exception("UPC exists.");
                }
            }

            // Declare objects
            CurtDevDataContext db = new CurtDevDataContext();
            PartAttribute pa = new PartAttribute();

            if (attrID == 0) {
                // Add New Attribute
                bool exists = db.PartAttributes.Where(x => x.partID == partID).Where(x => x.field == field).Count() > 0;
                if (exists) {
                    throw new Exception("This attribute already exists!");
                }

                pa = new PartAttribute {
                    partID = partID,
                    field = field.Trim(),
                    value = value.Trim(),
                    sort = (db.PartAttributes.Where(x => x.partID.Equals(partID)).OrderByDescending(x => x.sort).Select(x => x.sort).FirstOrDefault() + 1)
                };

                // Commit to databse
                db.PartAttributes.InsertOnSubmit(pa);
            } else {
                // Update Existing Attribute
                // Retrive PartAttribute
                pa = (from p in db.PartAttributes
                      where p.pAttrID.Equals(attrID)
                      select p).FirstOrDefault<PartAttribute>();

                // Update values
                pa.partID = partID;
                pa.field = field.Trim();
                pa.value = value.Trim();
            }
            // Commit to databse
            db.SubmitChanges();
            UpdateAttributeSort(getAttributeIDs(partID));
            db.indexPart(partID);
            UpdatePart(partID);
            // Return PartAttribute
            return pa;
        }
示例#6
0
        public static string DeleteVehiclePart(int vehicleID = 0, int partID = 0)
        {
            try {
                if (vehicleID == 0 || partID == 0) {
                    throw new Exception("Invalid data.");
                }

                CurtDevDataContext db = new CurtDevDataContext();
                VehiclePart vp = new VehiclePart();
                List<VehiclePartAttribute> attributes = new List<VehiclePartAttribute>();
                vp = (from v in db.VehicleParts
                      where v.vehicleID.Equals(vehicleID) && v.partID.Equals(partID)
                      select v).FirstOrDefault<VehiclePart>();
                attributes = (from vpa in db.VehiclePartAttributes
                                join v in db.VehicleParts on vpa.vPartID equals v.vPartID
                                where v.vehicleID == vehicleID && v.partID == partID
                                select vpa).ToList<VehiclePartAttribute>();
                db.VehiclePartAttributes.DeleteAllOnSubmit(attributes);
                db.SubmitChanges();
                db.VehicleParts.DeleteOnSubmit(vp);
                db.SubmitChanges();
                db.indexPart(partID);
                UpdatePart(partID);
                return "";
            } catch (Exception e) {
                return e.Message;
            }
        }
示例#7
0
        public static void DeleteAttribute(int attrID = 0)
        {
            // Validate
            if (attrID <= 0) { throw new Exception("Attribute ID is invalid."); }

            // Variable Declaration
            CurtDevDataContext db = new CurtDevDataContext();
            PartAttribute pa = new PartAttribute();

            pa = (from p in db.PartAttributes
                  where p.pAttrID.Equals(attrID)
                  select p).FirstOrDefault<PartAttribute>();
            int pid = pa.partID;
            db.PartAttributes.DeleteOnSubmit(pa);
            db.SubmitChanges();
            UpdateAttributeSort(getAttributeIDs(pid));
            db.indexPart(pid);
            UpdatePart(pid);
        }
示例#8
0
 public static string AddVehicle(int partID = 0, int vehicleID = 0)
 {
     try {
         CurtDevDataContext db = new CurtDevDataContext();
         if (partID > 0 && vehicleID > 0) {
             List<int> options = getAllCarryOverParts(partID);
             foreach (int partnum in options) {
                 // Check to make sure a record doesn't already exist for this part and vehicle
                 int existing = (from vp in db.VehicleParts
                                 where vp.partID.Equals(partnum) && vp.vehicleID.Equals(vehicleID)
                                 select vp).Count();
                 if (existing == 0) {
                     VehiclePart vp = new VehiclePart {
                         vehicleID = vehicleID,
                         partID = partnum,
                         exposed = "",
                         drilling = "",
                         installTime = 0
                     };
                     db.VehicleParts.InsertOnSubmit(vp);
                     db.SubmitChanges();
                     db.indexPart(partnum);
                 }
             }
             UpdatePart(partID);
         } else {
             throw new Exception("Invalid partID or vehicleID");
         }
         return "";
     } catch (Exception e) {
         return "{\"error\":\"" + e.Message + "\"}";
     }
 }
示例#9
0
 internal static void UpdateAttributeByField(int partID = 0, string key = "", string value = "")
 {
     CurtDevDataContext db = new CurtDevDataContext();
     PartAttribute attribute = (from a in db.PartAttributes
                                  where a.partID.Equals(partID) && a.field.ToLower().Equals(key.Trim().ToLower())
                                  select a).FirstOrDefault <PartAttribute>();
     attribute.value = value;
     db.SubmitChanges();
     db.indexPart(partID);
     UpdatePart(partID);
 }
示例#10
0
        public static VehiclePart UpdateVehicle(int partID = 0, int vehicleID = 0, string drilling = "", string exposed = "", int installTime = 0)
        {
            // Variable initializers
            CurtDevDataContext db = new CurtDevDataContext();
            VehiclePart vp = new VehiclePart();

            // Get the VehiclePart that we want to work with
            vp = (from v in db.VehicleParts
                  where v.vehicleID.Equals(vehicleID) && v.partID.Equals(partID)
                  select v).FirstOrDefault<VehiclePart>();
            if (vp == null) { throw new Exception("VehiclePart not found."); }

            // Update fields and commit to database
            vp.drilling = drilling;
            vp.exposed = exposed;
            vp.installTime = installTime;
            db.SubmitChanges();
            db.indexPart(partID);

            return vp;
        }