Esempio n. 1
0
        public HttpResponseMessage CommentPlace([ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey, CommentPlace comment)
        {
            var operationResult = this.PerformOperationAndHandleExceptions(() =>
            {
                var user = NationalPlacesDAL.Get <NationalPlaces.Models.User>("UsersInformation")
                           .FirstOrDefault(x => x.SessionKey == sessionKey);

                if (user == null)
                {
                    throw new InvalidOperationException("User or password is incorrect.");
                }

                double longitude = 0;
                double latitude  = 0;
                DecryptCoordinateToken(comment.LocationToken, user.AuthCode, ref longitude, ref latitude);
                var avaiablePlaces = GetNearPlaces(longitude, latitude);
                if (avaiablePlaces == null || avaiablePlaces.Count() == 0)
                {
                    throw new InvalidOperationException("There are no places near by.");
                }

                var placeToComment = avaiablePlaces.Where(x => x.PlaceIndentifierNumber == comment.PlaceIndentifierNumber).FirstOrDefault();
                if (placeToComment == null)
                {
                    throw new InvalidOperationException("You cant comment this place. It is not near you.");
                }

                var newComment = new NationalPlaces.Models.Comment()
                {
                    UserNickName = user.NickName,
                    Text         = comment.Content
                };

                placeToComment.Comments.Add(newComment);
                NationalPlacesDAL.SaveEntity(placeToComment, "PlaceInformation");

                return(Request.CreateResponse(HttpStatusCode.OK));
            });

            return(operationResult);
        }
        protected override void Seed(TripContext db)
        {
            db.Database.ExecuteSqlCommand("ALTER TABLE dbo.Pictures ADD CONSTRAINT Places_Pictures FOREIGN KEY (PlaceId) REFERENCES dbo.Places (Id) ON DELETE SET NULL");
            try
            {
                User u1 = new User
                {
                    Id       = 1,
                    Email    = "1",
                    Password = "******",
                    Role     = "admin"
                };
                User u2 = new User
                {
                    Id       = 2,
                    Email    = "2",
                    Password = "******",
                    Role     = "user"
                };
                User u3 = new User
                {
                    Id       = 3,
                    Email    = "3",
                    Password = "******",
                    Role     = "user"
                };
                db.Users.Add(u1);
                db.Users.Add(u2);
                db.Users.Add(u3);
                db.SaveChanges();
                Picture pic1 = new Picture
                {
                    id   = 1,
                    Name = "1.png",
                    Path = "1.png",
                };
                db.Pictures.Add(pic1);
                Place p1 = new Place
                {
                    Id          = 1,
                    Name        = "1",
                    Author      = u1,
                    Description = "1",
                    Latitude    = 1,
                    Longitude   = 1,
                    Rating      = 1,
                    Pictures    = new List <Picture>()
                    {
                        pic1
                    },
                };
                p1.Pictures.Add(pic1);
                db.Places.Add(p1);
                Track t1 = new Track
                {
                    Id          = 1,
                    Name        = "1",
                    Description = "1",
                    Rating      = 1,
                    Author      = u1,
                    TrackKml    = "1",
                    Places      = new List <Place>()
                    {
                        p1
                    },
                    Pictures = new List <Picture>()
                    {
                        pic1
                    }
                };
                db.Tracks.Add(t1);
                CommentTrack ct1 = new CommentTrack
                {
                    Id           = 1,
                    Author       = u2,
                    Rating       = 1,
                    TrackComment = t1,
                    Assessment   = 1,
                    Text         = "1"
                };
                db.CommentsTracks.Add(ct1);
                CommentPlace cp1 = new CommentPlace
                {
                    Id           = 1,
                    Author       = u2,
                    Rating       = 1,
                    PlaceComment = p1,
                    Text         = "1",
                    Assessment   = 1,
                };
                db.CommentsPlaces.Add(cp1);

                db.SaveChanges();
            }
            catch (Exception e)
            {
                throw new Exception();
            }
        }
Esempio n. 3
0
        public ActionResult Create(CommentModels commentModels,
                                   IEnumerable <HttpPostedFileBase> fileData)
        {
            try
            {
                List <Picture> pictures = new List <Picture>();
                if (ModelState.IsValid)
                {
                    if (fileData != null)
                    {
                        fileData = fileData.Where(f => f != null);
                        foreach (var someFile in fileData)
                        {
                            System.IO.FileInfo file = new System.IO.FileInfo(someFile.FileName);
                            if (file.Extension == ".jpeg" || file.Extension == ".jpg" || file.Extension == ".png" ||
                                file.Extension == ".gif" || file.Extension == ".bmp")
                            {
                                string fname = file.Name.Remove((file.Name.Length - file.Extension.Length));
                                fname = fname + System.DateTime.Now.ToString("_ddMMyyhhmmssms") + file.Extension;
                                someFile.SaveAs(Server.MapPath("../Content/Images/" + fname));
                                Picture pic = new Picture
                                {
                                    Name = fname,
                                    Path = Server.MapPath("../Content/Images/" + fname),
                                };
                                pictures.Add(pic);
                            }
                            else
                            {
                                ModelState.AddModelError("WrongFormatImages",
                                                         "Разрешенные только следующие форматы изображений : jpeg, jpg, png, gif, bmp");
                                return(PartialView(commentModels));
                            }
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("NoImage", "Не выбрано не одного фото");
                        return(PartialView(commentModels));
                    }

                    if (commentModels.TypeComment == "Place")
                    {
                        CommentPlace commetPlace = new CommentPlace();
                        commetPlace.PlaceId      = commentModels.TargetId;
                        commetPlace.Assessment   = commentModels.Assessment;
                        commetPlace.Pictures     = pictures;
                        commetPlace.PlaceComment = _placeService.GetItem(commentModels.TargetId);
                        commetPlace.Author       = _userService.GetItemList().First(user => user.Email == User.Identity.Name);
                        commetPlace.AuthorId     = _userService.GetItemList().First(user => user.Email == User.Identity.Name).Id;
                        commetPlace.Text         = commentModels.Text;
                        _commentPlaceService.Create(commetPlace);
                        _commentPlaceService.Save();
                        var summ  = 0;
                        var count = 0;
                        foreach (var comment in _commentPlaceService.GetItemList().Where(place => place.PlaceId == commentModels.TargetId))
                        {
                            summ += comment.Assessment;
                            count++;
                        }
                        var someplace = _placeService.GetItem(commentModels.TargetId);
                        someplace.Rating = summ / count;
                        _placeService.Update(someplace);
                        _placeService.Save();
                        return(Json(1));
                    }

                    if (commentModels.TypeComment == "Track")
                    {
                        CommentTrack commentTrack = new CommentTrack();
                        commentTrack.TrackId      = commentModels.TargetId;
                        commentTrack.Assessment   = commentModels.Assessment;
                        commentTrack.Pictures     = pictures;
                        commentTrack.TrackComment = _trackService.GetItem(commentModels.TargetId);
                        commentTrack.Author       = _userService.GetItemList().First(user => user.Email == User.Identity.Name);
                        commentTrack.AuthorId     = _userService.GetItemList().First(user => user.Email == User.Identity.Name).Id;
                        commentTrack.Text         = commentModels.Text;
                        _commentTrackService.Create(commentTrack);
                        _commentTrackService.Save();
                        var summ  = 0;
                        var count = 0;
                        foreach (var comment in _commentTrackService.GetItemList()
                                 .Where(place => place.TrackId == commentModels.TargetId))
                        {
                            summ += comment.Assessment;
                            count++;
                        }
                        var someTrack = _trackService.GetItem(commentModels.TargetId);
                        someTrack.Rating = summ / count;
                        _trackService.Update(someTrack);
                        _trackService.Save();
                        return(Json(1));
                    }
                }
            }
            catch (Exception e)
            {
                return(PartialView(commentModels));
            }
            return(PartialView(commentModels));

            return(PartialView());
        }