Beispiel #1
0
        public async Task <ActionResult> Band(MusicViewModel band, HttpPostedFileBase file)
        {
            var model = new MusicViewModel
            {
                Bands  = await _bandRepository.GetAllyAsync(),
                Genres = await _genreRepository.GetAllyAsync()
            };
            var bandCheck         = new Band();
            var allowedExtensions = new[] {
                ".Jpg", ".png", ".jpg", "jpeg"
            };
            var genre = await _genreRepository.GetByIdAsync(band.GenreId);

            try
            {
                if (!ModelState.IsValid)
                {
                    ModelState.AddModelError(string.Empty, "لطفا مقدار های مناسب پر کنید");
                }
                if (string.IsNullOrEmpty(band.GenreOldName))
                {
                    band.BandOldName = band.BandNewName;
                }

                bandCheck = await _bandRepository.GetByNameAsync(band.BandOldName);

                if (band.ActionType == "create" || band.ActionType == "edit")
                {
                    if (bandCheck == null)
                    {
                        if (file != null)
                        {
                            var fileName = Path.GetFileName(file.FileName);
                            var ext      = Path.GetExtension(file.FileName);
                            if (allowedExtensions.Contains(ext))
                            {
                                string name   = Path.GetFileNameWithoutExtension(fileName);
                                string myfile = name + "_" + band.BandNewName + ext;
                                var    path   = Path.Combine(Server.MapPath("~/DownloadCenter/Band"), myfile);
                                band.BandImage = "~/DownloadCenter/Band/" + myfile;
                                file.SaveAs(path);
                            }
                            else
                            {
                                ModelState.AddModelError(string.Empty, "Please choose only Image file");
                            }
                        }

                        var bandmodel = new Band
                        {
                            Name        = band.BandOldName,
                            Description = band.BandDescption,
                            ImageUrl    = band.BandImage
                        };
                        bandmodel.Genres.Add(genre);

                        await _bandRepository.CreateAsync(bandmodel);

                        model.Bands = await _bandRepository.GetAllyAsync();

                        //return RedirectToAction("Section", new { surveyName = surveys.SurveyTitle });
                        return(View(model));
                    }
                    else
                    {
                        if (file != null)
                        {
                            var fileName = Path.GetFileName(file.FileName);
                            var ext      = Path.GetExtension(file.FileName);
                            if (allowedExtensions.Contains(ext))
                            {
                                string name   = Path.GetFileNameWithoutExtension(fileName);
                                string myfile = name + "_" + band.BandNewName + ext;
                                var    path   = Path.Combine(Server.MapPath("~/DownloadCenter/Band"), myfile);
                                band.BandImage = "~/DownloadCenter/Band/" + myfile;
                                file.SaveAs(path);
                            }
                            else
                            {
                                ModelState.AddModelError(string.Empty, "Please choose only Image file");
                            }
                        }
                        bandCheck.Name        = (band.BandOldName == band.BandNewName ? band.BandOldName : band.BandNewName);
                        bandCheck.Description = band.BandDescption;
                        bandCheck.ImageUrl    = band.BandImage ?? bandCheck.ImageUrl;
                        if (genre != null)
                        {
                            bandCheck.Genres.Add(genre);
                        }

                        await _bandRepository.EditAsync(bandCheck.Id, bandCheck);
                    }
                }
                else
                {
                    await _bandRepository.DeleteAsync(bandCheck.Id);
                }

                model.Bands = await _bandRepository.GetAllyAsync();

                //return RedirectToAction("Section", new { surveyName = model.GenreOldName });
                return(View(model));
            }
            catch (Exception e)
            {
                ModelState.AddModelError(string.Empty, e.Message);
                return(View(model: model));
            }
        }