internal static Frame <IssueData> InternalGetIssues( int framePosition, int frameSize, int?categoryId = null, double?latitude = null, double?longitude = null, double?radius = null) { using (var db = new Db2019DbContext()) { var query = db.Issues.Include(i => i.Tags); if (categoryId.HasValue) { query = query.Where(i => i.CategoryId == categoryId.Value); } if (latitude.HasValue && longitude.HasValue && radius.HasValue) { query = query.Where( i => i.Latitude >= latitude - radius && i.Latitude <= latitude + radius && i.Longitude >= longitude - radius && i.Longitude <= longitude + radius); } query = query.OrderByDescending(i => i.CreatedTime); if (frameSize >= 0) { query = query.Skip(framePosition).Take(frameSize); } var issues = query.ToList(); return(new Frame <IssueData> { Data = issues.Select(Convert).ToList(), TotalCount = query.Count() }); } }
/// <summary> /// Получить сессию пользователя по идентификатору устройства /// </summary> /// <param name="deviceId">Идентификатор устройства</param> /// <returns>Сессия пользователя</returns> public Guid Get(string deviceId) { using (var db = new Db2019DbContext()) { var user = db.Users.FirstOrDefault(u => u.DeviceId == deviceId); if (user == null) { user = new User { DeviceId = deviceId }; db.Users.Add(user); } if (user.SessionId == null) { user.SessionId = Guid.NewGuid(); } user.LastLoginTime = DateTime.Now; db.SaveChanges(); return(user.SessionId.GetValueOrDefault()); } }
public IHttpActionResult Vote(string sessionId, int issueId) { using (var db = new Db2019DbContext()) { if (Guid.TryParse(sessionId, out var session) == false) { return(BadRequest("Invalid session id")); } var user = db.Users.FirstOrDefault(u => u.SessionId == session); if (user == null) { return(Unauthorized()); } var issue = db.Issues.Include(i => i.Tags).FirstOrDefault(i => i.Id == issueId); if (issue == null) { throw new HttpException((int)HttpStatusCode.NotFound, "Issue not found"); } issue.Rating += 1; db.SaveChanges(); return(Ok( new { Message = "Ok" })); } }
internal static IssueData GetById(int issueId) { using (var db = new Db2019DbContext()) { var issue = db.Issues.Include(i => i.Tags).Include(i => i.Category).FirstOrDefault(i => i.Id == issueId); return(Convert(issue)); } }
/// <summary> /// Получить список меток по категории /// </summary> /// <param name="categoryId">Идентификатор категории</param> /// <returns></returns> public List <TagData> Get(int categoryId) { using (var db = new Db2019DbContext()) { var tags = db.Tags.Where(t => t.CategoryId == categoryId).OrderBy(t => t.Id).ToList(); return(tags.Select(Convert).ToList()); } }
public static List <CategoryData> InternalCategoryList() { using (var db = new Db2019DbContext()) { var categories = db.Categories.OrderBy(c => c.Id).ToList(); return(categories.Select(Convert).ToList()); } }
public HttpResponseMessage GetPhoto(int issueId) { using (var db = new Db2019DbContext()) { var issue = db.Issues.Include(i => i.Tags).FirstOrDefault(i => i.Id == issueId); if (issue == null) { throw new HttpException((int)HttpStatusCode.NotFound, "Issue not found"); } var response = new HttpResponseMessage(); response.Content = issue.Photo?.Length > 0 ? new ByteArrayContent(issue.Photo) : GetStubPhotoContent(issueId); response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); return(response); } }
public string GetData(string filter) { List <Appeal> appeals = new List <Appeal>(); using (var db = new Db2019DbContext()) { var issues = db.Issues.ToList(); for (var index = 1; index <= issues.Count; index++) { var item = issues[index - 1]; appeals.Add(new Appeal() { Coordinate = new Point(item.Latitude, item.Longitude), Hint = item.Category.Name, Description = string.Format("<p><a href=\"{0}\">№ {1} От: {2}</a><br>Статус:{3}<br>Рейтинг: {4}<br>{5}<br>{6}<br></p>", Url.Action("ById", "ShowIssue", new { id = item.Id }), item.Id, item.CreatedTime.ToString("yyyy.MM.dd"), StatusNames[item.Status], item.Rating, item.Category.Name, item.Comment), StateCode = StatusCodes[item.Status] // % 3 == 0 ? "PROC" : index % 3 == 1 ? "NEW" : "PROCESS" }); } } var result = appeals; if ((!string.IsNullOrEmpty(filter)) && (filter != "ALL")) { result = result.Where(x => x.StateCode == filter).ToList(); } return(JsonConvert.SerializeObject(result)); }
/// <summary> /// Добавить новую заявку /// </summary> /// <param name="sessionId">Сессия пользователя</param> /// <param name="data">Параметры новой заявки</param> public IHttpActionResult Post( string sessionId, [FromBody] NewIssueData data) { traceLogger.Debug( "Post new issue: sessionId = {0}, body = {1}", sessionId, JsonConvert.SerializeObject(data, Formatting.None)); if (Guid.TryParse(sessionId, out var session) == false) { return(BadRequest("Invalid session id")); } if (data == null) { return(BadRequest("Invalid issue data")); } using (var db = new Db2019DbContext()) { var user = db.Users.FirstOrDefault(u => u.SessionId == session); if (user == null) { return(Unauthorized()); } var category = db.Categories.FirstOrDefault(c => c.Id == data.CategoryId); if (category == null) { return(BadRequest("Invalid category id")); } byte[] photo = null; try { photo = System.Convert.FromBase64String(data.Photo); } catch { return(BadRequest("Invalid photo")); } var tags = data.Tags?.Count > 0 ? db.Tags.Where(t => t.CategoryId == category.Id && data.Tags.Contains(t.Id)).ToList() : null; var issue = new Issue { User = user, Category = category, Latitude = data.Latitude, Longitude = data.Longitude, Photo = photo, Comment = string.IsNullOrWhiteSpace(data.Comment) ? null : data.Comment.Trim() }; if (tags != null) { foreach (var tag in tags) { issue.Tags.Add(tag); } } issue.CreatedTime = DateTime.Now; db.Issues.Add(issue); db.SaveChanges(); return(Ok( new { Message = "Ok" })); } }