Exemple #1
0
        public IActionResult Create()
        {
            List <Categorie> CategoryList = new List <Categorie>();

            CategoryList = (from categorie in _context.Categories select categorie).ToList();
            CategoryList.Insert(0, new Categorie {
                CategorieId = 1000, Nom = "Select"
            });
            ViewBag.CategoryList = CategoryList;

            ViewData["CategorieID"] = new SelectList(_context.Categories, "Nom", "Nom");

            AnnoncerObjectViewModel objVM = new AnnoncerObjectViewModel()
            {
                DateInscription = DateTime.Now, PrixDepart = 50
            };

            return(View(objVM));
        }
Exemple #2
0
        public async Task <IActionResult> Create(AnnoncerObjectViewModel objetVM, IFormFile pic, IList <IFormFile> attachments)
        {
            if (ModelState.IsValid)
            {
                //validation supplémentaire
                if (objetVM.CategorieID == 1000)
                {
                    List <Categorie> CategoryList = new List <Categorie>();

                    CategoryList = (from categorie in _context.Categories select categorie).ToList();
                    CategoryList.Insert(0, new Categorie {
                        CategorieId = 1000, Nom = "Select"
                    });
                    ViewBag.CategoryList = CategoryList;

                    ViewData["CategorieID"] = new SelectList(_context.Categories, "Nom", "Nom");

                    ModelState.AddModelError("", "Select Category");
                    return(View(objetVM));
                } //fin validation sup

                Objet objet = Mapper.Map <AnnoncerObjectViewModel, Objet>(objetVM);

                // Affectation des autres propriétés requise... (Vendeur, Miseur, DateInscription, imageUrl, ConfigurationAdmin, Categorie, List d'enchere et Liste de fichiers)
                var userManager = _serviceProvider.GetRequiredService <UserManager <ApplicationUser> >();
                var userName    = await userManager.FindByNameAsync(User.Identity.Name);

                objet.Vendeur         = (Vendeur)userName;
                objet.DateInscription = DateTime.Now;


                if (pic != null)
                {
                    var file     = Path.GetFileName(pic.FileName);
                    var fileName = System.IO.Path.Combine(he.WebRootPath, "Uploads") + $@"\{file}";
                    pic.CopyTo(new FileStream(fileName, FileMode.Create));
                    objet.imageUrl = "Uploads/" + file;
                }

                //carles
                foreach (IFormFile item in attachments)
                {
                    if (item != null)
                    {
                        var attachmentfile     = Path.GetFileName(item.FileName);
                        var attachmentFileName = System.IO.Path.Combine(he.WebRootPath, "Attachments") + $@"\{attachmentfile}";
                        item.CopyTo(new FileStream(attachmentFileName, FileMode.Create));
                        objet.Fichiers = new List <Fichier>();
                        objet.Fichiers.Add(new Fichier()
                        {
                            NomOriginal = attachmentfile, NomLocale = attachmentFileName, verseLe = DateTime.Now
                        });
                    }
                }

                objet.Categorie          = _context.Categories.FirstOrDefault(p => p.CategorieId == objetVM.CategorieID);
                objet.ConfigurationAdmin = _context.ConfigurationAdmins.Last();
                objet.Encheres           = new List <Enchere>();
                // objet.Fichiers = new List<Fichier>();

                //Affectation d'une 1e mise.. (Par défaut celui qui crée un objet place une première mise sur son objet, comme ça il est facturé si jamais personne mise et il "remporte" son objet)
                Miseur miseur = (Miseur)userName;
                objet.Encheres.Add(new Enchere()
                {
                    Objet = objet, Niveau = objet.PrixDepart, MiseMax = objet.PrixDepart, Miseur = miseur
                });
                // Fin affection 1e mise


                // Fin affectation des autres propriétés requises

                //Ajout à la BD de l'Objet à vendre ainsi qu'une première mise par défaut
                _context.Add(objet);
                await _context.SaveChangesAsync();

                //Fin ajout BD

                //Ajout Arash pour mettre objet en status Vendu apres certain temp !!!!!!!!!!!!!! ces ligne du code doit être exactement ici !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                BackgroundJob.Schedule(() => ChangeStatus(objet.ObjetID), objet.DateLimite);


                TempData["message"] = $"Objet '{objet.Nom}' has been created for bidding starting now and ending at '{objet.DateLimite}'.";
                return(RedirectToAction(nameof(Index)));
            }

            foreach (var modelState in ViewData.ModelState.Values)
            {
                foreach (var error in modelState.Errors)
                {
                }
            }

            return(View(objetVM));
        }