public ActionResult Create(DishRegister model)
        {
            if (ModelState.IsValid)
            {
                Dish dish = model.dish;
                if (model.restTypesId != null)
                {
                    foreach (var typeId in model.restTypesId)
                    {
                        Type restType = db.Type.Find(typeId);
                        restType.Dish.Add(dish);
                        dish.Type.Add(restType);
                    }
                }
                dish.IdRestaurant = model.idRestaurant;
                db.Dish.Add(dish);

                if (model.uploadFilesNames != null)
                {
                    string[] uploadFiles = model.uploadFilesNames.Split(',');
                    for (int i = 0; i < Request.Files.Count; i++)
                    {
                        HttpPostedFileBase tmpFile = Request.Files[i];
                        if (tmpFile != null && uploadFiles.Any(name => name == tmpFile.FileName) && uploadFiles.Length > 0)
                        {
                            byte[] dbImage  = FileUpload(tmpFile);
                            Photo  tmpPhoto = new Photo();
                            tmpPhoto.Photo1 = dbImage;
                            db.Photo.Add(tmpPhoto);

                            dish.Photo.Add(tmpPhoto);
                            tmpPhoto.Dish.Add(dish);
                            uploadFiles = uploadFiles.Where(name => name != tmpFile.FileName).ToArray();
                        }
                    }
                }
                var locals = (from loc in db.Local
                              where loc.IdRestaurant == model.idRestaurant
                              select loc);
                foreach (var local in locals)
                {
                    DishesPerLocal dpl = new DishesPerLocal();
                    dpl.IdDish  = model.dish.IdDish;
                    dpl.IdLocal = local.IdLocal;
                    dpl.State   = true;
                    db.DishesPerLocal.Add(dpl);
                }
                db.SaveChanges();
                return(RedirectToAction("Index", "Locals", new { id = dish.IdRestaurant }));
            }
            model.restaurant = db.Restaurant.Find(model.idRestaurant);
            return(View(model));
        }
Exemple #2
0
        public ActionResult Edit(localRegister dataModel)
        {
            if (!ModelState.IsValid || dataModel.local.IdDistrict == 0)
            {
                if (dataModel.local.IdDistrict == 0)
                {
                    TempData["Error"] = "Please select a District.";
                }
                ViewBag.IdDistrict   = new SelectList(db.District, "IdDistrict", "Name");
                ViewBag.IdRestaurant = new SelectList(db.Restaurant, "IdRestaurant", "Name");
                localRegister model = new localRegister
                {
                    restaurant       = db.Restaurant.Find(dataModel.idRestaurant),
                    cantMesas        = db.Table.Count(cantTable => cantTable.IdLocal == dataModel.local.IdLocal),
                    idRestaurant     = dataModel.idRestaurant,
                    menu             = GetMenuLocalEdit(dataModel.idRestaurant),
                    local            = dataModel.local,
                    photos           = db.Photo.ToList().Where(m => m.Local.Any(n => n.IdLocal == dataModel.local.IdLocal)),
                    uploadFilesNames = "",
                    deletedFilesIds  = ""
                };
                return(View(model));
            }

            using (var dbTran = db.Database.BeginTransaction())
            {
                try
                {
                    Local local = db.Local.Find(dataModel.local.IdLocal);
                    local.Longitude       = dataModel.local.Longitude;
                    local.Latitude        = dataModel.local.Latitude;
                    local.IdDistrict      = dataModel.local.IdDistrict;
                    local.Detail          = dataModel.local.Detail;
                    db.Entry(local).State = EntityState.Modified;

                    if (dataModel.menu != null)
                    {
                        foreach (DishLocal localDish in dataModel.menu)
                        {
                            DishesPerLocal tmpDishesPerLocal = db.DishesPerLocal.Find(local.IdLocal, localDish.idDish);
                            tmpDishesPerLocal.State           = localDish.state;
                            db.Entry(tmpDishesPerLocal).State = EntityState.Modified;
                        }
                    }

                    int cantMesas = db.Table.Count(cantTable => cantTable.IdLocal == local.IdLocal);
                    if (dataModel.cantMesas > cantMesas)
                    {
                        for (int i = cantMesas + 1; i < dataModel.cantMesas; i++)
                        {
                            Table tmpTable = new Table();
                            tmpTable.IdLocal         = local.IdLocal;
                            tmpTable.DistinctiveName = i.ToString();
                            db.Table.Add(tmpTable);
                        }
                    }
                    else if (dataModel.cantMesas < cantMesas)
                    {
                        var tables = db.Table.Where(cantTable => cantTable.IdLocal == local.IdLocal).ToArray();
                        for (int i = cantMesas - 1; i > dataModel.cantMesas; i--)
                        {
                            db.Table.Remove(tables[i]);
                        }
                    }

                    if (dataModel.deletedFilesIds != null)
                    {
                        foreach (var idPhotoDelete in dataModel.deletedFilesIds.Split(','))
                        {
                            db.PR_DeleteLocalPhoto(local.IdLocal, int.Parse(idPhotoDelete));
                        }
                    }

                    if (dataModel.uploadFilesNames != null)
                    {
                        string[] uploadFiles = dataModel.uploadFilesNames.Split(',');
                        for (int i = 0; i < Request.Files.Count; i++)
                        {
                            HttpPostedFileBase tmpFile = Request.Files[i];
                            if (tmpFile != null && uploadFiles.Any(name => name == tmpFile.FileName) && uploadFiles.Length > 0)
                            {
                                byte[] dbImage  = FileUpload(tmpFile);
                                Photo  tmpPhoto = new Photo();
                                tmpPhoto.Photo1 = dbImage;
                                db.Photo.Add(tmpPhoto);

                                local.Photo.Add(tmpPhoto);
                                tmpPhoto.Local.Add(local);
                                uploadFiles = uploadFiles.Where(name => name != tmpFile.FileName).ToArray();
                            }
                        }
                    }

                    db.SaveChanges();
                    dbTran.Commit();
                    TempData["Success"] = "Local edited successfully.";
                    return(RedirectToAction("Index", "Locals", new { id = dataModel.idRestaurant }));
                }
                catch (Exception ex)
                {
                    dbTran.Rollback();
                    TempData["Error"] = ex.ToString();
                    return(RedirectToAction("Edit", "Locals", new { id = dataModel.local.IdLocal }));
                }
            }
        }
Exemple #3
0
        public ActionResult Create(localRegister dataModel)
        {
            if (!ModelState.IsValid || dataModel.local.IdDistrict == 0)
            {
                if (dataModel.local.IdDistrict == 0)
                {
                    TempData["Error"] = "Please select a District.";
                }
                ViewBag.IdDistrict   = new SelectList(db.District, "IdDistrict", "Name");
                ViewBag.IdRestaurant = new SelectList(db.Restaurant, "IdRestaurant", "Name");

                localRegister model = new localRegister();
                model.restaurant       = db.Restaurant.Find(dataModel.idRestaurant);
                model.idRestaurant     = dataModel.idRestaurant;
                model.menu             = GetMenuLocal(dataModel.idRestaurant);
                model.uploadFilesNames = String.Empty;
                model.local            = new Local();
                return(View(model));
            }


            using (var dbTran = db.Database.BeginTransaction())
            {
                try
                {
                    int idLocal = Convert.ToInt32(db.PR_CreateLocal(dataModel.idRestaurant, dataModel.local.IdDistrict,
                                                                    dataModel.local.Detail, dataModel.local.Latitude, dataModel.local.Longitude).ToList()[0]);

                    if (dataModel.menu != null)
                    {
                        foreach (DishLocal localDish in dataModel.menu)
                        {
                            DishesPerLocal tmpDishesPerLocal = new DishesPerLocal();
                            tmpDishesPerLocal.IdLocal = idLocal;
                            tmpDishesPerLocal.IdDish  = localDish.idDish;
                            tmpDishesPerLocal.State   = localDish.state;
                            db.DishesPerLocal.Add(tmpDishesPerLocal);
                        }
                    }
                    Local tmpLocal = db.Local.Find(idLocal);

                    for (int i = 1; i <= dataModel.cantMesas; i++)
                    {
                        Table tmpTable = new Table();
                        tmpTable.IdLocal         = tmpLocal.IdLocal;
                        tmpTable.DistinctiveName = i.ToString();
                        db.Table.Add(tmpTable);
                    }

                    if (dataModel.uploadFilesNames != null)
                    {
                        string[] uploadFiles = dataModel.uploadFilesNames.Split(',');
                        for (int i = 0; i < Request.Files.Count; i++)
                        {
                            HttpPostedFileBase tmpFile = Request.Files[i];
                            if (tmpFile != null && uploadFiles.Any(name => name == tmpFile.FileName) && uploadFiles.Length > 0)
                            {
                                byte[] dbImage  = FileUpload(tmpFile);
                                Photo  tmpPhoto = new Photo();
                                tmpPhoto.Photo1 = dbImage;
                                db.Photo.Add(tmpPhoto);

                                tmpLocal.Photo.Add(tmpPhoto);
                                tmpPhoto.Local.Add(tmpLocal);
                                uploadFiles = uploadFiles.Where(name => name != tmpFile.FileName).ToArray();
                            }
                        }
                    }

                    db.SaveChanges();
                    dbTran.Commit();
                    TempData["Success"] = "Local created successfully";
                    return(RedirectToAction("Index", "Locals", new { id = dataModel.idRestaurant }));
                }
                catch (Exception ex)
                {
                    dbTran.Rollback();
                    TempData["Error"] = ex.ToString();
                    return(RedirectToAction("Create", "Locals", new { id = dataModel.idRestaurant }));
                }
            }
        }