public Photo AddTag(long photoID, string tags) { //Get the photo to be tagged Photo photo = PhotoRepository.Single(p => p.ID == photoID, p => p.Site, p => p.Tags); if (photo == null) { return null; } //Create the array of tags string[] tagArray = tags.Split(','); foreach (string name in tagArray) { //all tags are stored in lowercase String text = name.ToLower(); ; //Need to check if the tag exists Tag tag = TagRepository.Find(t => t.Name.Equals(text)).FirstOrDefault(); //if tag is null, create one if (tag == null) { tag = new Tag(name); } //add the tag photo.Tags.Add(tag); } //commit changes Unit.Commit(); photo.AvailableTags = GetUnusedTagNames(photoID); return photo; }
private ThumbnailModel GetDetailsForTag(Tag tag) { TagDetails details = PhotoRepository.GetTagDetails(tag); details.CoverPhotoID = details.LastPhotoID; return new ThumbnailModel() { ID = details.TagID, Name = details.TagName, First = details.First, Last = details.Last, PhotoCount = details.PhotoCount, CoverPhotoID = details.CoverPhotoID, Link = "/search/index?tag=" + details.TagName }; }
public ActionResult Tags() { var tags = TagRepository.GetAll(t => t.Photos).ToList(); Tag tag = new Tag(); return View(tags); }
public TagDetails GetTagDetails(Tag tag) { TagDetails details = new TagDetails(); details.TagName = tag.Name; details.TagID = tag.ID; using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); string command_string = "select min(Captured), max(Captured), count(*), max(Photos.ID) from Photos " + "INNER JOIN PhotoTags ON Photos.ID = PhotoTags.Photo_ID " + "INNER JOIN Tags ON PhotoTags.Tag_ID = Tags.ID " + "where PhotoTags.Tag_ID = @tagID"; using (SqlCommand command = new SqlCommand(command_string, conn)) { command.Parameters.AddWithValue("@tagID", tag.ID); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { details.First = reader.GetDateTime(0); details.Last = reader.GetDateTime(1); details.PhotoCount = reader.GetInt32(2); details.LastPhotoID = reader.GetInt64(3); } } } } return details; }