public object GetAllTours(int id, [FromQuery] int page, [FromQuery] int pageSize) { var responseModel = new ResponseModel(); var data = new JArray(); try { do { var errorCode = _tourInfoService.TryGetTours(id, page, pageSize, out var tours, out var pagination); if (errorCode != ErrorCode.Success) { responseModel.FromErrorCode(errorCode); break; } errorCode = _tourInfoService.TryGetTourInfoById(id, out var tourInfo); if (errorCode != ErrorCode.Success) { responseModel.FromErrorCode(errorCode); break; } if (tourInfo == null) { responseModel.FromErrorCode(ErrorCode.TourNotFound); break; } if (!_userService.TryGetUsers(tourInfo.CreateById, out var host)) { responseModel.FromErrorCode(ErrorCode.UserNotFound); break; } // Cast to ClaimsIdentity. var identity = HttpContext.User.Identity as ClaimsIdentity; // Gets list of claims. IEnumerable <Claim> claim = identity?.Claims; // Gets userId from claims. Generally it's an email address. var userIdString = claim ?.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier) ?.Value; if (string.IsNullOrEmpty(userIdString)) { responseModel.FromErrorCode(ErrorCode.UserNotFound); break; } // Convert userId to int var userId = int.Parse(userIdString); var eIsFriend = _friendService.CalculateIsFriend(userId, host.Id); // Add data to Response foreach (var tour in tours) { _ = _tourService.TryGetTotalMember(tour.Id, out var totalMember); data.Add(tour.ToSimpleJson(host, eIsFriend, totalMember, tourInfo)); } responseModel.ErrorCode = (int)ErrorCode.Success; responseModel.Message = Description(responseModel.ErrorCode); responseModel.Data = data; responseModel.AdditionalProperties["Pagination"] = JObject.FromObject(pagination); } while (false); } catch (Exception ex) { responseModel.FromException(ex); } return(responseModel.ToJson()); }
public object UpdateTour(int tourInfoId, int tourId, [FromBody] object requestBody) { var responseModel = new ResponseModel(); try { do { var body = requestBody != null ? JObject.Parse(requestBody.ToString() ?? "{}") : null; if (!CoreHelper.GetParameter(out var jsonStartDate, body, "StartDay", JTokenType.Date, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonEndDate, body, "EndDay", JTokenType.Date, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonMaxMember, body, "MaxMember", JTokenType.Integer, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonTotalDay, body, "TotalDay", JTokenType.Integer, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonTotalNight, body, "TotalNight", JTokenType.Integer, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonPrice, body, "Price", JTokenType.Float, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonName, body, "Name", JTokenType.String, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonTimelines, body, "Timelines", JTokenType.Array, ref responseModel) || !CoreHelper.GetParameter(out var jsonServices, body, "Services", JTokenType.Array, ref responseModel, isNullable: true)) { break; } if (_tourInfoService.TryGetTourInfoById(tourInfoId, out var tourInfo) != ErrorCode.Success || tourInfo == null) { throw new ExceptionWithMessage("Tour info not found."); } var userId = CoreHelper.GetUserId(HttpContext, ref responseModel); // User dont have permission if (tourInfo.CreateById != userId) { Response.StatusCode = 403; break; } var name = jsonName?.ToString(); var isStartDayParse = DateTime.TryParse(jsonStartDate?.ToString(), out var startDate); var isEndDayParse = DateTime.TryParse(jsonEndDate?.ToString(), out var endDate); var isMaxMemberParse = int.TryParse(jsonMaxMember?.ToString(), out var maxMember); var isTotalDayParsed = int.TryParse(jsonTotalDay?.ToString(), out var totalDay); var isTotalNightParsed = int.TryParse(jsonTotalNight?.ToString(), out var totalNight); var isPriceParsed = float.TryParse(jsonPrice?.ToString(), out var price); var services = jsonServices != null ? JsonConvert.DeserializeObject <string[]>(jsonServices.ToString()) : null; var timelines = jsonTimelines?.ToObject <List <TimeLine> >(); if (!_tourService.TryGetTour(userId, tourId, out var tour) || tour == null) { throw new ExceptionWithMessage("Tour not found."); } tour.Update( name: name !, timelines: timelines, startDay: isStartDayParse ? startDate : (DateTime?)null, endDay: isEndDayParse ? endDate : (DateTime?)null, totalDay: isTotalDayParsed ? totalDay : (int?)null, totalNight: isTotalNightParsed ? totalNight : (int?)null, maxMember: isMaxMemberParse ? maxMember : (int?)null, price: isPriceParsed ? price : (float?)null, services: services ); if (!_tourService.TryUpdateTour(tour)) { responseModel.FromErrorCode(ErrorCode.Fail); break; } responseModel.FromErrorCode(ErrorCode.Success); responseModel.Data = new JArray { JObject.FromObject(tour) }; } while (false); } catch (Exception ex) { responseModel.FromException(ex); } return(responseModel.ToJson()); }