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(); } }
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()); }