예제 #1
0
        //public ActionResult AddActivity(FormCollection coll)

        public ActionResult AddActivity(Activiteit activiteit, string video, string TagsString, string BenodigdhedenString, HttpPostedFileBase AfbeeldingFile, string Prijs, int?BoekId, List <HttpPostedFileBase> images, string bestaandefotos)
        {
            //TODO: lijst van de geselecteerde afbeeldingen
            ModelState.Remove("Id");

            ModelState.Remove("Prijs");

            if (!BoekId.HasValue)
            {
                return(RedirectToAction("Index"));
            }
            if (bs.GetBoekByID((int)BoekId) == null)
            {
                return(RedirectToAction("index"));
            }
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Boek", new { id = (int)BoekId }));
            }
            if (bs.GetPoiById(activiteit.PoiId) == null)
            {
                return(RedirectToAction("Boek", new { id = (int)BoekId }));
            }

            String[] tags = TagsString.Split(',');
            List <Models.OmgevingsBoek_Models.Tag> tagList = new List <Models.OmgevingsBoek_Models.Tag>();

            foreach (string t in tags)
            {
                if (t == "")
                {
                    continue;
                }
                tagList.Add(bs.InsertTag(t));
            }


            String[]            benodigdheden     = BenodigdhedenString.Split(',');
            List <Benodigdheid> benodigdhedenList = new List <Benodigdheid>();

            foreach (string b in benodigdheden)
            {
                if (b == "")
                {
                    continue;
                }
                benodigdhedenList.Add(bs.InsertBenodigdheid(b));
            }

            if (activiteit.Id == 0)
            {
                Activiteit NieuweActiviteit = new Activiteit()
                {
                    Naam                   = activiteit.Naam,
                    EigenaarId             = bs.GetUser(User.Identity.Name).Id,
                    MaxLeeftijd            = activiteit.MaxLeeftijd,
                    MinLeeftijd            = activiteit.MinLeeftijd,
                    Prijs                  = activiteit.Prijs,
                    DitactischeToelichting = activiteit.DitactischeToelichting,
                    MinDuur                = activiteit.MinDuur,
                    MaxDuur                = activiteit.MaxDuur,
                    PoiId                  = activiteit.PoiId,
                    Uitleg                 = activiteit.Uitleg,
                    Benodigdheden          = benodigdhedenList,
                    Tags                   = tagList,
                    AfbeeldingNaam         = activiteit.AfbeeldingNaam
                };
                if (video != null)
                {
                    NieuweActiviteit.Videos = new List <Video>();
                    NieuweActiviteit.Videos.Add(new Video()
                    {
                        Naam = video
                    });
                }
                NieuweActiviteit.Boeken = new List <Boek>();
                NieuweActiviteit.Boeken.Add(bs.GetBoekByID((int)BoekId));

                Activiteit p = bs.InsertActiviteit(NieuweActiviteit);
                if (p.Id > 0)
                {
                    if (AfbeeldingFile != null)
                    {
                        if (AfbeeldingFile.ContentLength > 10000000)
                        {
                            return(RedirectToAction("Boek", new { id = (int)BoekId }));
                        }
                        try
                        {
                            flickr.UploadPictureAsync(AfbeeldingFile.InputStream, activiteit.Naam, activiteit.Naam, "", "", false, false, false, ContentType.Photo, SafetyLevel.Safe, HiddenFromSearch.Hidden, (res) =>
                            {
                                if (!res.HasError)
                                {
                                    flickr.PhotosetsAddPhoto(ConfigurationManager.AppSettings.Get("FlickrActiviteitenAlbumId"), res.Result);
                                    PhotoInfo fotoInfo = flickr.PhotosGetInfo(res.Result);
                                    bs.UpdateActiviteitFoto(p.Id, fotoInfo.MediumUrl);
                                }
                            });
                        }
                        catch (Exception ex)
                        {
                            //return RedirectToAction("Index");
                        }
                    }
                    if (images != null)
                    {
                        try
                        {
                            foreach (HttpPostedFileBase image in images)
                            {
                                if (image.ContentLength > 10000000)
                                {
                                    continue;
                                }
                                //nog fouten met meerdere afbeeldingen
                                flickr.UploadPictureAsync(image.InputStream, activiteit.Naam, activiteit.Naam, "", "", false, false, false, ContentType.Photo, SafetyLevel.Safe, HiddenFromSearch.Hidden, (res) =>
                                {
                                    if (!res.HasError)
                                    {
                                        PhotoInfo info = flickr.PhotosGetInfo(res.Result);
                                        bs.AddFotoToActiviteit(p.Id, info.LargeUrl);
                                    }
                                });
                            }
                        }
                        catch (Exception ex)
                        {
                            //return RedirectToAction("Index");
                        }
                    }
                }
            }
            else
            {
                Activiteit origineeleActiviteit = bs.GetActiviteitById(activiteit.Id);
                if (origineeleActiviteit == null)
                {
                    return(RedirectToAction("Boek", new { id = (int)BoekId }));
                }
                if (origineeleActiviteit.Eigenaar.UserName != User.Identity.Name)
                {
                    return(RedirectToAction("Boek", new { id = (int)BoekId }));
                }


                if (bestaandefotos != null)
                {
                    string[] bf = bestaandefotos.Split(',');

                    for (int i = 0; i < bf.Length; i++)
                    {
                        bf[i] = bf[i].Trim();
                    }
                    foreach (Foto f in origineeleActiviteit.Fotos)
                    {
                        if (!bestaandefotos.Contains(f.FotoUrl))
                        {
                            origineeleActiviteit.Fotos.Remove(f);
                        }
                    }
                }



                Activiteit NieuweActiviteit = new Activiteit()
                {
                    Id                     = activiteit.Id,
                    Naam                   = activiteit.Naam,
                    MaxLeeftijd            = activiteit.MaxLeeftijd,
                    MinLeeftijd            = activiteit.MinLeeftijd,
                    Prijs                  = activiteit.Prijs,
                    DitactischeToelichting = activiteit.DitactischeToelichting,
                    MinDuur                = activiteit.MinDuur,
                    MaxDuur                = activiteit.MaxDuur,
                    PoiId                  = activiteit.PoiId,
                    Uitleg                 = activiteit.Uitleg,
                    Benodigdheden          = benodigdhedenList,
                    Tags                   = tagList,
                    AfbeeldingNaam         = activiteit.AfbeeldingNaam,
                    Fotos                  = origineeleActiviteit.Fotos
                };

                bs.UpdateActiviteit(NieuweActiviteit);

                if (AfbeeldingFile != null)
                {
                    if (AfbeeldingFile.ContentLength > 10000000)
                    {
                        return(RedirectToAction("Boek", new { id = (int)BoekId }));
                    }
                    try
                    {
                        flickr.UploadPictureAsync(AfbeeldingFile.InputStream, activiteit.Naam, activiteit.Naam, "", "", false, false, false, ContentType.Photo, SafetyLevel.Safe, HiddenFromSearch.Hidden, (res) =>
                        {
                            if (!res.HasError)
                            {
                                flickr.PhotosetsAddPhoto(ConfigurationManager.AppSettings.Get("FlickrActiviteitenAlbumId"), res.Result);
                                PhotoInfo fotoInfo = flickr.PhotosGetInfo(res.Result);
                                bs.UpdateActiviteitFoto(NieuweActiviteit.Id, fotoInfo.MediumUrl);
                            }
                        });
                    }
                    catch (Exception ex)
                    {
                        //return RedirectToAction("Index");
                    }
                }
                if (images != null)
                {
                    try
                    {
                        foreach (HttpPostedFileBase image in images)
                        {
                            if (image.ContentLength > 10000000)
                            {
                                return(RedirectToAction("Boek", new { id = (int)BoekId }));
                            }
                            //TODO: Dit hier fixen
                            flickr.UploadPictureAsync(image.InputStream, activiteit.Naam, activiteit.Naam, "", "", false, false, false, ContentType.Photo, SafetyLevel.Safe, HiddenFromSearch.Hidden, (res) =>
                            {
                                if (!res.HasError)
                                {
                                    PhotoInfo info = flickr.PhotosGetInfo(res.Result);
                                    bs.AddFotoToActiviteit(NieuweActiviteit.Id, info.LargeUrl);
                                }
                            });
                            Thread.Sleep(5);
                        }
                    }
                    catch (Exception ex)
                    {
                        //return RedirectToAction("Index");
                    }
                }
            }
            return(RedirectToAction("Boek", new { id = (int)BoekId }));
        }