public HttpResponseMessage Post(LoginRequest loginRequest) { var user = _context.Users.AsNoTracking().SingleOrDefault(a => a.Email == loginRequest.email); if (user != null) { if (user.Blocked) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_BLOCKED))); } var incoming = AuthUtils.Hash(loginRequest.password, user.Salt); if (user.SaltedAndHashedPassword != null) { if (AuthUtils.SlowEquals(incoming, user.SaltedAndHashedPassword)) { var claimsIdentity = new ClaimsIdentity(); claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, loginRequest.email)); var loginResult = new StandartLoginProvider(Handler).CreateLoginResult(claimsIdentity, Services.Settings.MasterKey); return(Request.CreateResponse(HttpStatusCode.OK, loginResult)); } return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_LOGIN_INVALID_PASS))); } return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_LOGIN_INVALID_PASS))); } return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_LOGIN_INVALID_EMAIL))); }
public HttpResponseMessage GetCurrentUser() { try { var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NULL))); } var account = _context.Accounts.AsNoTracking().SingleOrDefault(a => a.AccountId == currentUser.Id); if (account == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND))); } var result = _context.Profile.AsNoTracking().Where(p => p.Id == account.UserId).Select(x => new UserDTO { Id = x.Id, Email = x.User.Email, FirstName = x.FirstName, LastName = x.LastName, Gender = x.Gender, Birthday = x.Birthday, Phone = x.Phone, Description = x.Description, Rating = x.Rating, RatingCount = x.RatingCount, Score = x.Score, EmailConfirmed = x.User.EmailConfirmed, PhoneStatus = x.User.PhoneStatus, CardCount = _context.Cards.Count(c => c.UserId == x.Id), CreatedAt = x.CreatedAt, UpdatedAt = x.UpdatedAt, EmailNotifications = x.User.EmailNotifications, EmailNewsletter = x.User.EmailNewsletter, Picture = new PictureDTO { Id = x.Picture.Id, Name = x.Picture.Name, Description = x.Picture.Description, Url = x.Picture.Url, Xsmall = x.Picture.Xsmall, Small = x.Picture.Small, Mid = x.Picture.Mid, Large = x.Picture.Large, Xlarge = x.Picture.Xlarge, Default = x.Picture.Default, CreatedAt = x.Picture.CreatedAt } }); return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage Confirm(ConfirmRequest confirmRequest) { try { if (confirmRequest.Code == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_REQUIRED, new List <string> { "code" }))); } var user = !string.IsNullOrEmpty(confirmRequest.UserId) ? _context.Users.SingleOrDefault(x => x.Id == confirmRequest.UserId) : _context.Users.SingleOrDefault(x => x.Email == confirmRequest.Email); if (user == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, new List <string> { confirmRequest.UserId ?? confirmRequest.Email }))); } if (user.EmailConfirmed) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_CONFIRMED, new List <string> { confirmRequest.UserId }))); } var incoming = AuthUtils.Hash(confirmRequest.Code, user.Salt); if (AuthUtils.SlowEquals(incoming, user.SaltedAndHashedEmail)) { user.EmailConfirmed = true; user.SaltedAndHashedEmail = null; _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_USER_CONFIRMED, new List <string> { user.Id }))); } return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_WRONG_CODE, new List <string> { confirmRequest.UserId ?? confirmRequest.Code }))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage Clear(string id) { try { var respList = new List <string>(); // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var notification = _context.Notifications.SingleOrDefault(x => x.Id == id); if (notification == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_NOTIFICATION_NOTFOUND, respList))); } if (notification.UserId != account.UserId) { respList.Add(notification.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_NOTIFICATION_WRONG_USER, respList))); } notification.Readed = true; _context.MarkAsModified(notification); _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage ResetPassword(ConfirmRequest resetRequest) { try { var user = !string.IsNullOrEmpty(resetRequest.UserId) ? _context.Users.SingleOrDefault(x => x.Id == resetRequest.UserId) : _context.Users.SingleOrDefault(x => x.Email == resetRequest.Email); if (user == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, new List <string> { resetRequest.UserId ?? resetRequest.Email }))); } var confirmCode = AuthUtils.RandomNumString(8); user.SaltedAndHashedCode = AuthUtils.Hash(confirmCode, user.Salt); user.ResetRequested = true; _context.SaveChanges(); var profile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == user.Id); using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = ConstVals.Restore, ToUserId = user.Id, ToUserName = profile.FirstName, ToUserEmail = user.Email, ConfirmCode = confirmCode }; mailSender.Create(_context, bem); } return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_USER_RESET_REQUESTED, new List <string> { user.Id }))); } catch (Exception ex) { Debug.WriteLine(ex); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage DeleteArticle(string id) { try { // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } string[] cred = currentUser.Id.Split(':'); string email = cred[1]; var admin = _context.Admins.AsNoTracking().SingleOrDefault(x => x.Email == email); if (admin == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var respList = new List <string>(); var article = _context.Article.SingleOrDefault(a => a.Id == id); if (article == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_ARTICLE_NOTFOUND, respList))); } _context.Article.Remove(article); _context.SaveChanges(); respList.Add(id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_DELETED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage AdminRegistration(RegistrationRequest registrationRequest) { try { var respList = new List <string>(); if (!AuthUtils.IsEmailValid(registrationRequest.Email)) { respList.Add(registrationRequest.Email); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_INVALID_EMAIL, respList))); } var admin = _context.Admins.AsNoTracking().SingleOrDefault(a => a.Email == registrationRequest.Email); if (admin != null) { respList.Add(registrationRequest.Email); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_EXISTS_EMAIL, respList))); } var salt = AuthUtils.GenerateSalt(); var newUser = new Admin { Id = SequentialGuid.NewGuid().ToString(), Email = registrationRequest.Email, Salt = salt, SaltedAndHashedPassword = AuthUtils.Hash(registrationRequest.Password, salt) }; _context.Admins.Add(newUser); _context.SaveChanges(); respList.Add(newUser.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage ClearAll() { try { var respList = new List <string>(); // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var notifications = _context.Notifications.Where(x => x.UserId == account.UserId && x.Readed == false); foreach (var notification in notifications) { notification.Readed = true; _context.MarkAsModified(notification); } _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage Unsubscribe(UnsubscribeRequest req) { try { var respList = new List <string>(); var user = _context.Users.SingleOrDefault(u => u.EmailSubCode == req.Code); if (user == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND))); } switch (req.Type) { case "newsletter": user.EmailNewsletter = false; break; case "notifications": user.EmailNotifications = false; break; default: user.EmailNewsletter = false; user.EmailNotifications = false; break; } _context.MarkAsModified(user); _context.SaveChanges(); respList.Add(user.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage PutApartment(string id, ApartmentDTO apartment) { try { var respList = new List <string>(); ResponseDTO resp; // Check Apartment is not NULL if (apartment == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_NULL))); } // Check Current Apartment is not NULL var apartmentCurrent = _context.Apartments.SingleOrDefault(a => a.Id == id); if (apartmentCurrent == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_NOTFOUND, respList))); } // Check Apartment Name is not NULL resp = CheckHelper.IsNull(apartment.Name, "Name", RespH.SRV_APARTMENT_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Apartment Adress is not NULL resp = CheckHelper.IsNull(apartment.Adress, "Adress", RespH.SRV_APARTMENT_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Apartment Type is not NULL resp = CheckHelper.IsNull(apartment.Type, "Type", RespH.SRV_APARTMENT_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Apartment User if (apartment.UserId != account.UserId) { respList.Add(apartment.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_WRONG_USER, respList))); } if (apartmentCurrent.UserId != account.UserId) { respList.Add(apartmentCurrent.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_WRONG_USER, respList))); } // Update Apartment apartmentCurrent.Name = apartment.Name; apartmentCurrent.Adress = apartment.Adress; apartmentCurrent.Type = apartment.Type; apartmentCurrent.Options = apartment.Options; apartmentCurrent.Latitude = apartment.Latitude; apartmentCurrent.Longitude = apartment.Longitude; apartmentCurrent.Lang = apartment.Lang; _context.MarkAsModified(apartmentCurrent); _context.SaveChanges(); respList.Add(apartment.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED, respList))); } catch (Exception ex) { Debug.WriteLine(ex.InnerException); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage GetNotifications() { try { var respList = new List <string>(); // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var notifications = _context.Notifications.AsNoTracking().Where(n => n.UserId == account.UserId && n.Readed == false); var result = new List <NotificationDTO>(); foreach (var notification in notifications) { var notif = new NotificationDTO(); notif.Id = notification.Id; notif.Type = notification.Type; notif.UserId = notification.UserId; notif.Code = notification.Code; notif.Readed = notification.Readed; notif.CreatedAt = notification.CreatedAt; notif.Data = new NotificationData(); switch (notification.Code) { case RespH.SRV_NOTIF_RESERV_PENDING: notif.Data.CardId = notification.Reservation.CardId; notif.Data.CardName = notification.Reservation.Card.Name; notif.Data.ReservationId = notification.ReservationId; notif.Data.ResrvationStatus = notification.Reservation.Status; notif.Data.UserId = notification.Reservation.UserId; notif.Data.FirstName = notification.Reservation.User.Profile.FirstName; notif.Data.LastName = notification.Reservation.User.Profile.LastName; break; case RespH.SRV_NOTIF_RESERV_ACCEPTED: notif.Data.CardId = notification.Reservation.CardId; notif.Data.CardName = notification.Reservation.Card.Name; notif.Data.ReservationId = notification.ReservationId; notif.Data.ResrvationStatus = notification.Reservation.Status; notif.Data.UserId = notification.Reservation.Card.UserId; notif.Data.FirstName = notification.Reservation.Card.User.Profile.FirstName; notif.Data.LastName = notification.Reservation.Card.User.Profile.LastName; break; case RespH.SRV_NOTIF_RESERV_DECLINED: notif.Data.CardId = notification.Reservation.CardId; notif.Data.CardName = notification.Reservation.Card.Name; notif.Data.ReservationId = notification.ReservationId; notif.Data.ResrvationStatus = notification.Reservation.Status; notif.Data.UserId = notification.Reservation.Card.UserId; notif.Data.FirstName = notification.Reservation.Card.User.Profile.FirstName; notif.Data.LastName = notification.Reservation.Card.User.Profile.LastName; break; case RespH.SRV_NOTIF_CARD_FAVORITED: notif.Data.CardId = notification.Favorite.CardId; notif.Data.CardName = notification.Favorite.Card.Name; notif.Data.UserId = notification.Favorite.UserId; notif.Data.FirstName = notification.Favorite.User.Profile.FirstName; notif.Data.LastName = notification.Favorite.User.Profile.LastName; break; case RespH.SRV_NOTIF_REVIEW_ADDED: notif.Data.ReviewId = notification.ReviewId; notif.Data.ReviewText = notification.Review.Text; notif.Data.UserId = notification.Review.FromUserId; notif.Data.FirstName = notification.Review.FromUser.Profile.FirstName; notif.Data.LastName = notification.Review.FromUser.Profile.LastName; break; case RespH.SRV_NOTIF_REVIEW_RATING_ADDED: notif.Data.ReviewId = notification.ReviewId; notif.Data.ReviewText = notification.Review.Text; notif.Data.ReviewRating = notification.Review.Rating; notif.Data.UserId = notification.Review.FromUserId; notif.Data.FirstName = notification.Review.FromUser.Profile.FirstName; notif.Data.LastName = notification.Review.FromUser.Profile.LastName; break; case RespH.SRV_NOTIF_REVIEW_AVAILABLE: notif.Data.CardId = notification.Reservation.CardId; notif.Data.CardName = notification.Reservation.Card.Name; notif.Data.ReservationId = notification.ReservationId; break; } result.Add(notif); } return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage PutCurrentUser(UserDTO profile) { try { var respList = new List <string>(); ResponseDTO resp; // Check Profile is not NULL if (profile == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NULL))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Profile User if (profile.Id != account.UserId) { respList.Add(profile.Id); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_WRONG_USER, respList))); } var user = _context.Users.AsNoTracking().SingleOrDefault(u => u.Id == account.UserId); if (user == null) { respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Current Profile is not NULL var profileCurrent = _context.Profile.SingleOrDefault(a => a.Id == account.UserId); if (profileCurrent == null) { respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } if (!string.IsNullOrWhiteSpace(profile.Phone)) { profile.Phone = CheckHelper.CleanPhone(profile.Phone); if (profile.Phone[0] == '7') { if (profile.Phone.Length != 11) { respList.Add(profile.Phone); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PROFILE_WRONG_PHONE, respList))); } } if (profileCurrent.Phone != profile.Phone) { var hasCards = _context.Cards.Any(x => x.UserId == user.Id); if (hasCards) { respList.Add(user.Id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PROFILE_ERR_UPDATE_PHONE, respList))); } user.PhoneStatus = ConstVals.PUnconf; _context.MarkAsModified(user); } } else { var hasCards = _context.Cards.Any(x => x.UserId == user.Id); if (hasCards) { respList.Add(user.Id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PROFILE_ERR_UPDATE_PHONE, respList))); } user.PhoneStatus = ConstVals.PUnconf; _context.MarkAsModified(user); } // Check FirstName is not NULL resp = CheckHelper.IsNull(profile.FirstName, "FirstName", RespH.SRV_USER_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check LastName is not NULL //resp = CheckHelper.IsNull(profile.LastName, "LastName", RespH.SRV_USER_REQUIRED); //if (resp != null) return Request.CreateResponse(HttpStatusCode.BadRequest, resp); // Check Phone is not NULL //resp = CheckHelper.IsNull(profile.Phone, "Phone", RespH.SRV_USER_REQUIRED); //if (resp != null) return Request.CreateResponse(HttpStatusCode.BadRequest, resp); // Check Genderis not NULL //resp = CheckHelper.IsNull(profile.Gender, "Gender", RespH.SRV_USER_REQUIRED); //if (resp != null) return Request.CreateResponse(HttpStatusCode.BadRequest, resp); profileCurrent.FirstName = profile.FirstName; profileCurrent.LastName = profile.LastName; profileCurrent.Gender = profile.Gender; profileCurrent.Birthday = profile.Birthday; profileCurrent.Phone = profile.Phone; profileCurrent.Description = profile.Description; user.EmailNotifications = profile.EmailNotifications; user.EmailNewsletter = profile.EmailNewsletter; _context.MarkAsModified(user); _context.MarkAsModified(profileCurrent); _context.SaveChanges(); respList.Add(profileCurrent.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage SetEmail(UserDTO userdata) { try { var respList = new List <string>(); if (string.IsNullOrWhiteSpace(userdata.Email)) { respList.Add("Email"); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_REQUIRED, respList))); } if (!AuthUtils.IsEmailValid(userdata.Email)) { respList.Add(userdata.Email); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_INVALID_EMAIL, respList))); } var usersame = _context.Users.AsNoTracking().SingleOrDefault(a => a.Email == userdata.Email); if (usersame != null) { respList.Add(userdata.Email); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_EXISTS_EMAIL, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var user = _context.Users.SingleOrDefault(x => x.Id == account.UserId); var profile = _context.Profile.SingleOrDefault(x => x.Id == account.UserId); if (user == null || profile == null) { respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } if (!string.IsNullOrWhiteSpace(user.Email)) { respList.Add(user.Email); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_EXISTS, respList))); } var salt = AuthUtils.GenerateSalt(); var confirmCode = AuthUtils.RandomNumString(6); user.Email = userdata.Email; user.Salt = salt; user.SaltedAndHashedEmail = AuthUtils.Hash(confirmCode, salt); _context.MarkAsModified(user); _context.SaveChanges(); using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = ConstVals.Reg, ToUserId = user.Id, ToUserEmail = user.Email, ToUserName = profile.FirstName, ConfirmCode = confirmCode }; mailSender.Create(_context, bem); } respList.Add(user.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage GetProfile(string userId) { try { var profile = _context.Profile.AsNoTracking().Where(p => p.Id == userId).Select(x => new UserDTO { Id = x.Id, Email = x.User.Email, FirstName = x.FirstName, LastName = x.LastName, Gender = x.Gender, Birthday = x.Birthday, Phone = x.Phone, PhoneStatus = x.User.PhoneStatus, Description = x.Description, Rating = x.Rating, RatingCount = x.RatingCount, Score = x.Score, CreatedAt = x.CreatedAt, UpdatedAt = x.UpdatedAt, EmailNewsletter = x.User.EmailNewsletter, EmailNotifications = x.User.EmailNotifications, Picture = _context.Pictures.Where(pic => pic.Id == x.PictureId).Select(p => new PictureDTO { Id = p.Id, Name = p.Name, Description = p.Description, Url = p.Url, Xsmall = p.Xsmall, Small = p.Small, Mid = p.Mid, Large = p.Large, Xlarge = p.Xlarge, Default = p.Default, CreatedAt = p.CreatedAt }).FirstOrDefault() }).FirstOrDefault(); if (profile != null) { profile.CardCount = _context.Cards.AsNoTracking().Count(c => c.UserId == profile.Id); if (profile.CardCount > 0) { profile.Cards = _context.Cards.Include("Genders") .Include("Dates") .Include("Apartment") .AsNoTracking() .Select(c => new CardDTO { Name = c.Name, UserId = c.UserId, Description = c.Description, ApartmentId = c.ApartmentId, PriceDay = c.Genders.Min(ge => ge.Price), PriceGender = c.Genders.FirstOrDefault(gn => gn.Price == c.Genders.Min(ge => ge.Price)).Name, Cohabitation = c.Cohabitation, Lang = c.Lang, Dates = _context.Dates.Where(date => date.CardId == c.Id).Select(d => new DatesDTO { DateFrom = d.DateFrom, DateTo = d.DateTo } ).ToList(), Apartment = _context.Apartments.Where(a => a.Id == c.ApartmentId).Select(ap => new ApartmentDTO { Id = ap.Id, Name = ap.Name, Type = ap.Type, Options = ap.Options, UserId = ap.UserId, Adress = ap.Adress, FormattedAdress = ap.FormattedAdress, Latitude = ap.Latitude, Longitude = ap.Longitude, PlaceId = ap.PlaceId, Pictures = _context.Pictures.Where(pic => pic.Apartments.Contains(c.Apartment)).Select(apic => new PictureDTO { Id = apic.Id, Name = apic.Name, Description = apic.Description, Url = apic.Url, Xsmall = apic.Xsmall, Small = apic.Small, Mid = apic.Mid, Large = apic.Large, Xlarge = apic.Xlarge, Default = apic.Default }).ToList() }).FirstOrDefault() }).ToList(); } profile.Reviews = _context.Reviews.AsNoTracking() .Where(r => r.ToUserId == profile.Id) .Select(owrev => new ReviewDTO { Id = owrev.Id, FromUserId = owrev.FromUserId, ToUserId = owrev.ToUserId, ReservationId = owrev.ReservationId, Rating = owrev.Rating, Text = owrev.Text, Type = _context.Reservations.FirstOrDefault(res => res.Id == owrev.ReservationId) .UserId == userId ? ConstVals.Renter : ConstVals.Owner, CreatedAt = owrev.CreatedAt, UpdatedAt = owrev.UpdatedAt, FromUser = new BaseUserDTO { Id = owrev.FromUser.Profile.Id, Email = owrev.FromUser.Email, FirstName = owrev.FromUser.Profile.FirstName, LastName = owrev.FromUser.Profile.LastName, Rating = owrev.FromUser.Profile.Rating, RatingCount = owrev.FromUser.Profile.RatingCount, Gender = owrev.FromUser.Profile.Gender, Picture = new PictureDTO { Id = owrev.FromUser.Profile.Picture.Id, Name = owrev.FromUser.Profile.Picture.Name, Description = owrev.FromUser.Profile.Picture.Description, Url = owrev.FromUser.Profile.Picture.Url, Xsmall = owrev.FromUser.Profile.Picture.Xsmall, Small = owrev.FromUser.Profile.Picture.Small, Mid = owrev.FromUser.Profile.Picture.Mid, Large = owrev.FromUser.Profile.Picture.Large, Xlarge = owrev.FromUser.Profile.Picture.Xlarge, Default = owrev.FromUser.Profile.Picture.Default, CreatedAt = owrev.FromUser.Profile.Picture.CreatedAt } } }).OrderByDescending(r => r.CreatedAt).ToList(); } List <UserDTO> result = new List <UserDTO> { profile }; return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage GetArticles([FromUri] string filter = null) { try { // Создаем предикат var pre = PredicateBuilder.True <Article>(); pre = pre.And(x => x.Deleted == false); // Получаем объект из строки запроса if (!string.IsNullOrWhiteSpace(filter) && filter != "{}" && filter != "{filter}") { var artRequest = JsonConvert.DeserializeObject <ArticleDTO>(filter); if (artRequest == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_ARTICLE_INVALID_FILTER))); } if (artRequest.Id != null) { pre = pre.And(x => x.Id == artRequest.Id); } if (artRequest.Name != null) { pre = pre.And(x => x.Name == artRequest.Name); } if (artRequest.Title != null) { pre = pre.And(x => x.Title == artRequest.Title); } if (artRequest.Text != null) { pre = pre.And(x => x.Text.Contains(artRequest.Text)); } if (artRequest.Type != null) { pre = pre.And(x => x.Type == artRequest.Type); } if (artRequest.Lang != null) { pre = pre.And(x => x.Lang == artRequest.Lang); } } var result = _context.Article.AsQueryable() .AsNoTracking() .Where(pre.Compile()) .Select(art => new ArticleDTO { Id = art.Id, Name = art.Name, Title = art.Title, Text = art.Text, Type = art.Type, Lang = art.Lang, CreatedAt = art.CreatedAt, UpdatedAt = art.UpdatedAt }).ToList().OrderBy(o => o.Lang).ThenBy(o => o.Type).ThenBy(o => o.Name); return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage PostFeedback(FeedbackDTO feedback) { try { var respList = new List <string>(); if (feedback == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_FEEDBACK_NULL))); } if (feedback.Text == null) { respList.Add("Text"); } if (feedback.Type == null) { respList.Add("Type"); } if (feedback.UserId != null) { var user = _context.Users.AsNoTracking().SingleOrDefault(x => x.Id == feedback.UserId); var profile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == feedback.UserId); if (user == null || profile == null) { respList.Add(feedback.UserId); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } feedback.UserName = profile.FirstName + " " + profile.LastName; feedback.Email = user.Email; } else { if (string.IsNullOrWhiteSpace(feedback.UserName)) { respList.Add("Username"); } } if (feedback.AnswerByEmail && feedback.Email == null) { respList.Add("Email"); } if (respList.Count > 0) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_FEEDBACK_REQUIRED, respList))); } var bem = new BaseEmailMessage(); if (feedback.Type == ConstVals.Abuse) { var abuser = _context.Users.SingleOrDefault(x => x.Id == feedback.AbuserId); var abuserProfile = _context.Profile.SingleOrDefault(x => x.Id == feedback.AbuserId); if (abuser == null || abuserProfile == null) { respList.Add(feedback.AbuserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_FEEDBACK_ABUSER_NOTFOUND, respList))); } StringBuilder addText = new StringBuilder(); addText.Append("Жалоба на пользователя: <br>"); addText.Append(abuserProfile.FirstName + " " + abuserProfile.LastName + "<br>"); addText.Append("Email: " + abuser.Email + "<br>"); addText.Append("Id: " + abuser.Id + "<br>"); addText.Append("Текст жалобы: <br>"); addText.Append(feedback.Text); feedback.Text = addText.ToString(); bem.Code = ConstVals.Abuse; } else { bem.Code = ConstVals.Feedback; } var feedbackGuid = SequentialGuid.NewGuid().ToString(); _context.Feedbacks.Add( new Feedback { Id = feedbackGuid, AbuserId = feedback.AbuserId, UserId = feedback.UserId, UserName = feedback.UserName, Type = feedback.Type, Email = feedback.Email, Text = feedback.Text, AnswerByEmail = feedback.AnswerByEmail }); _context.SaveChanges(); using (MailSender mailSender = new MailSender()) { bem.ToUserEmail = Environment.GetEnvironmentVariable(feedback.Type == ConstVals.Abuse ? "ABUSE_EMAIL" : "FEEDBACK_EMAIL"); bem.ToUserName = "******"; bem.FromUserEmail = feedback.Email; bem.FromUserName = feedback.UserName; bem.Text = feedback.Text; bem.AnswerByEmail = feedback.Type == ConstVals.Abuse || feedback.AnswerByEmail; mailSender.Create(_context, bem); } respList.Add(feedbackGuid); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { Debug.WriteLine(ex); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage UploadProfile(string id, PictureDTO picture) { try { var respList = new List <string>(); ResponseDTO resp; // Check Picture is not NULL if (picture == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PICTURE_NULL))); } // Check Picture name is not NULL resp = CheckHelper.IsNull(picture.Name, "Name", RespH.SRV_PICTURE_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Picture CloudinaryPublicId is not NULL resp = CheckHelper.IsNull(picture.CloudinaryPublicId, "CloudinaryPublicId", RespH.SRV_PICTURE_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Current Profile is not NULL var profile = _context.Profile.SingleOrDefault(a => a.Id == id); if (profile == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Profile User if (profile.Id != account.UserId) { respList.Add(profile.Id); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_WRONG_USER, respList))); } var pictureGuid = SequentialGuid.NewGuid().ToString(); profile.Picture = new Picture { Id = pictureGuid, Name = picture.Name, Description = picture.Description, Url = CloudinaryHelper.Cloudinary.Api.UrlImgUp.BuildUrl(picture.Name), Small = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(34).Height(34).Crop("thumb")).BuildUrl(picture.Name), Mid = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(62).Height(62).Crop("thumb")).BuildUrl(picture.Name), Large = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(76).Height(76).Crop("thumb")).BuildUrl(picture.Name), Xlarge = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(96).Height(96).Crop("thumb")).BuildUrl(picture.Name), Default = true }; _context.SaveChanges(); respList.Add(pictureGuid); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage UploadApartment(string id, List <PictureDTO> pictures) { try { var respList = new List <string>(); ResponseDTO resp; // Check Pictures is not NULL if (pictures == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PICTURE_NULL))); } // Check Apartment is not NULL var apartment = _context.Apartments.SingleOrDefault(a => a.Id == id); if (apartment == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_NOTFOUND, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Apartemtn User if (apartment.UserId != account.UserId) { respList.Add(apartment.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_WRONG_USER, respList))); } foreach (var picture in pictures) { // Check Picture name is not NULL resp = CheckHelper.IsNull(picture.Name, "Name", RespH.SRV_PICTURE_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Picture CloudinaryPublicId is not NULL resp = CheckHelper.IsNull(picture.CloudinaryPublicId, "CloudinaryPublicId", RespH.SRV_PICTURE_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } } foreach (var picture in pictures) { var pictureGuid = SequentialGuid.NewGuid().ToString(); var pic = new Picture { Id = pictureGuid, Name = picture.Name, Description = picture.Description, Url = CloudinaryHelper.Cloudinary.Api.UrlImgUp.BuildUrl(picture.Name), Xsmall = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(143).Crop("thumb")).BuildUrl(picture.Name), Small = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(190).Crop("thumb")).BuildUrl(picture.Name), Mid = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Height(225).Width(370).Crop("fill")).BuildUrl(picture.Name), Large = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(552).Crop("limit")).BuildUrl(picture.Name), Xlarge = CloudinaryHelper.Cloudinary.Api.UrlImgUp.Transform( new Transformation().Width(1024).Crop("limit")).BuildUrl(picture.Name), Default = picture.Default ?? false }; _context.Pictures.Add(pic); _context.SaveChanges(); apartment.Pictures.Add(pic); _context.SaveChanges(); respList.Add(pictureGuid); } var defaultPic = _context.Pictures.SingleOrDefault(x => x.Default && x.Apartments.Any(a => a.Id == apartment.Id)); if (defaultPic == null) { var pic = _context.Pictures.SingleOrDefault(x => x.Id == apartment.Pictures.First().Id); pic.Default = true; _context.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage DeleteApartment(string id) { try { var respList = new List <string>(); var apartment = _context.Apartments.SingleOrDefault(a => a.Id == id); // Check Apartment is not NULL if (apartment == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_NOTFOUND, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Apartment User if (apartment.UserId != account.UserId) { respList.Add(apartment.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_WRONG_USER, respList))); } // Check Adverts with such Apartment var adverts = _context.Cards.Where(adv => adv.ApartmentId == id).Select(a => a.Id); if (adverts.Any()) { foreach (var advert in adverts) { respList.Add(advert); } return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_DEPENDENCY, respList))); } // Delete Apartment with PropVals _context.Apartments.Remove(apartment); _context.SaveChanges(); respList.Add(apartment.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_DELETED, respList))); } catch (Exception ex) { Debug.WriteLine(ex.InnerException); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage AcceptDeclineReservation(string reservId, string status) { try { var respList = new List <string>(); // Check status is not NULL if (status == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_NULL))); } // Check Status if (status != ConstVals.Accepted && status != ConstVals.Declined) { respList.Add(status); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_WRONG_STATUS, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } ResponseDTO resp = CheckHelper.IsProfileFill(_context, account.UserId, true); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } //Check Reservation var currentReservation = _context.Reservations.SingleOrDefault(r => r.Id == reservId); // Check Reservation is not NULL if (currentReservation == null) { respList.Add(reservId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_NOTFOUND, respList))); } var card = _context.Cards.Include("Apartment") .AsNoTracking() .SingleOrDefault(a => a.Id == currentReservation.CardId); // Check CARD is not NULL if (card == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_CARD_NULL))); } // Check CARD User if (card.UserId != account.UserId) { respList.Add(card.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_CARD_WRONG_USER, respList))); } string notifCode; //Check status if (status == ConstVals.Accepted) { // Check Available Dates var reservationDates = new TimeRange(currentReservation.DateFrom, currentReservation.DateTo); var unavailableDates = new List <TimeRange>(); var cardDates = _context.Dates.Where(x => x.CardId == card.Id); if (cardDates.Any()) { foreach (var unDate in cardDates) { unavailableDates.Add(new TimeRange(unDate.DateFrom, unDate.DateTo)); } if (unavailableDates.Any(unavailableDate => unavailableDate.IntersectsWith(reservationDates))) { respList.Add(reservationDates.ToString()); respList.Add(unavailableDates.ToString()); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_UNAVAILABLE_DATE, respList))); } } var currentReservations = _context.Reservations.AsNoTracking().Where( r => r.CardId == currentReservation.CardId && currentReservation.Status == ConstVals.Accepted); foreach (var currentReserv in currentReservations) { var reservedDates = new TimeRange(currentReserv.DateFrom, currentReserv.DateTo); if (reservedDates.IntersectsWith(reservationDates)) { respList.Add(reservationDates.ToString()); respList.Add(reservedDates.ToString()); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_UNAVAILABLE_DATE, respList))); } } notifCode = RespH.SRV_NOTIF_RESERV_ACCEPTED; } else { notifCode = RespH.SRV_NOTIF_RESERV_DECLINED; } currentReservation.Status = status; _context.MarkAsModified(currentReservation); _context.SaveChanges(); // Create Notification Notifications.Create(_context, currentReservation.UserId, ConstVals.General, notifCode, null, currentReservation.Id, null); var fromUser = _context.Users.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); var fromProfile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); var toUser = _context.Users.AsNoTracking().SingleOrDefault(x => x.Id == currentReservation.UserId); var toProfile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == currentReservation.UserId); using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = notifCode, CardName = card.Name, CardType = DicHelper.GetCardTypeByLang(card.Apartment.Type), CardDescription = card.Description, CardId = card.Id, DateFrom = currentReservation.DateFrom, DateTo = currentReservation.DateTo, FromUserName = fromProfile.FirstName, FromUserEmail = fromUser.Email, ToUserName = toProfile.FirstName, ToUserEmail = toUser.Email, UnsubscrCode = toUser.EmailSubCode }; mailSender.Create(_context, bem); } respList.Add(reservId); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage GetReservations(string type = null) { try { var respList = new List <string>(); // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var ownerReserv = new List <ReservationDTO>(); var renterReserv = new List <ReservationDTO>(); if (type == ConstVals.Owner || string.IsNullOrWhiteSpace(type)) { ownerReserv = _context.Reservations.AsNoTracking().Where(x => x.Card.UserId == account.UserId) .OrderByDescending(r => r.CreatedAt).Select(r => new ReservationDTO { Id = r.Id, Type = ConstVals.Owner, CardId = r.CardId, UserId = r.UserId, Status = r.Status, Gender = r.Gender, DateFrom = r.DateFrom, DateTo = r.DateTo, CreatedAt = r.CreatedAt, UpdatedAt = r.UpdatedAt }).ToList(); } if (type == ConstVals.Renter || string.IsNullOrWhiteSpace(type)) { renterReserv = _context.Reservations.AsNoTracking().Where(x => x.UserId == account.UserId) .OrderByDescending(r => r.CreatedAt) .Select(r => new ReservationDTO { Id = r.Id, Type = ConstVals.Renter, CardId = r.CardId, UserId = r.UserId, Status = r.Status, Gender = r.Gender, DateFrom = r.DateFrom, DateTo = r.DateTo, CreatedAt = r.CreatedAt, UpdatedAt = r.UpdatedAt }).ToList(); } var resCount = ownerReserv.Count + renterReserv.Count; //if (resCount < 1) //{ // return Request.CreateResponse(HttpStatusCode.OK, new List<ReservationDTO>()); //} var result = new List <ReservationDTO>(resCount); var reservations = new List <ReservationDTO>(resCount); reservations.AddRange(ownerReserv); reservations.AddRange(renterReserv); if (!reservations.Any()) { return(Request.CreateResponse(HttpStatusCode.OK, result)); } foreach (var res in reservations) { res.User = _context.Users.AsNoTracking().Where(u => u.Id == res.UserId).Select(r => new BaseUserDTO { Id = r.Profile.Id, Email = r.Email, FirstName = r.Profile.FirstName, LastName = r.Profile.LastName, Rating = r.Profile.Rating, RatingCount = r.Profile.RatingCount, Gender = r.Profile.Gender, Picture = new PictureDTO { Id = r.Profile.Picture.Id, Name = r.Profile.Picture.Name, Description = r.Profile.Picture.Description, Url = r.Profile.Picture.Url, Xsmall = r.Profile.Picture.Xsmall, Small = r.Profile.Picture.Small, Mid = r.Profile.Picture.Mid, Large = r.Profile.Picture.Large, Xlarge = r.Profile.Picture.Xlarge, Default = r.Profile.Picture.Default, CreatedAt = r.Profile.Picture.CreatedAt } }).FirstOrDefault(); res.Card = _context.Cards.AsNoTracking().Where(x => x.Id == res.CardId).Select(r => new CardDTO { Name = r.Name, UserId = r.UserId, Description = r.Description, ApartmentId = r.ApartmentId, PriceDay = r.Genders.FirstOrDefault(ge => ge.Name == res.Gender).Price, Cohabitation = r.Cohabitation, Lang = r.Lang, Dates = r.Dates.Select(d => new DatesDTO { DateFrom = d.DateFrom, DateTo = d.DateTo }) .Union( r.Reservations.Where(reserv => reserv.Status == ConstVals.Accepted) .Select(rv => new DatesDTO { DateFrom = rv.DateFrom, DateTo = rv.DateTo }).ToList()).ToList(), User = new UserDTO { Id = r.User.Profile.Id, FirstName = r.User.Profile.FirstName, LastName = r.User.Profile.LastName, Rating = r.User.Profile.Rating, RatingCount = r.User.Profile.RatingCount, Gender = r.User.Profile.Gender, Phone = r.User.Profile.Phone, Picture = new PictureDTO { Id = r.User.Profile.Picture.Id, Name = r.User.Profile.Picture.Name, Description = r.User.Profile.Picture.Description, Url = r.User.Profile.Picture.Url, Xsmall = r.User.Profile.Picture.Xsmall, Small = r.User.Profile.Picture.Small, Mid = r.User.Profile.Picture.Mid, Large = r.User.Profile.Picture.Large, Xlarge = r.User.Profile.Picture.Xlarge, Default = r.User.Profile.Picture.Default, CreatedAt = r.User.Profile.Picture.CreatedAt } }, Apartment = new ApartmentDTO { Id = r.Apartment.Id, Name = r.Apartment.Name, Type = r.Apartment.Type, Options = r.Apartment.Options, UserId = r.Apartment.UserId, Adress = r.Apartment.Adress, Latitude = r.Apartment.Latitude, Longitude = r.Apartment.Longitude } }).FirstOrDefault(); result.Add(res); } return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { Debug.WriteLine(ex); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage MakeReservation(string cardId, string gender, DateTime dateFrom, DateTime dateTo) { try { var respList = new List <string>(); // Check Reservation is not NULL if (cardId == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_NULL))); } var card = _context.Cards.Include("Apartment").SingleOrDefault(a => a.Id == cardId); // Check CARD is not NULL if (card == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_CARD_NULL))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Card Owner if (card.UserId == account.UserId) { respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_SELF, respList))); } ResponseDTO resp = CheckHelper.IsProfileFill(_context, account.UserId); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check CARD User //if (CARD.UserId != account.UserId) //{ // respList.Add(CARD.UserId); // respList.Add(account.UserId); // return this.Request.CreateResponse(HttpStatusCode.BadRequest, // RespH.Create(RespH.SRV_CARD_WRONG_USER, respList)); //} // Check Dates if (DateTime.Compare(dateFrom, dateTo) > 0) { respList.Add(dateFrom.ToLocalTime().ToString(CultureInfo.InvariantCulture)); respList.Add(dateTo.ToLocalTime().ToString(CultureInfo.InvariantCulture)); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_CARD_WRONG_DATE, respList))); } // Check Reservation already exists if ( _context.Reservations.AsNoTracking().Any( x => x.UserId == account.UserId && x.CardId == cardId && x.DateFrom == dateFrom && x.DateTo == dateTo)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_EXISTS))); } // Check Available Dates var reservationDates = new TimeRange(dateFrom, dateTo); var unavailableDates = _context.Dates.AsNoTracking().Where(x => x.CardId == card.Id) .ToList() .Select(unDate => new TimeRange(unDate.DateFrom, unDate.DateTo)) .ToList(); if (unavailableDates.Any(unavailableDate => unavailableDate.IntersectsWith(reservationDates))) { respList.Add(reservationDates.ToString()); respList.Add(unavailableDates.ToString()); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_UNAVAILABLE_DATE, respList))); } var currentReservations = _context.Reservations.AsNoTracking() .Where(r => r.CardId == cardId && r.Status == ConstVals.Accepted); foreach (var currentReservation in currentReservations) { var reservedDates = new TimeRange(currentReservation.DateFrom, currentReservation.DateTo); if (reservedDates.IntersectsWith(reservationDates)) { respList.Add(reservationDates.ToString()); respList.Add(reservedDates.ToString()); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_RESERVATION_UNAVAILABLE_DATE, respList))); } } var reservationGuid = SequentialGuid.NewGuid().ToString(); _context.Reservations.Add(new Reservation { Id = reservationGuid, CardId = cardId, UserId = account.UserId, Status = ConstVals.Pending, Gender = gender, DateFrom = dateFrom, DateTo = dateTo }); _context.SaveChanges(); // Create Notification Notifications.Create(_context, card.UserId, ConstVals.General, RespH.SRV_NOTIF_RESERV_PENDING, null, reservationGuid, null); var user = _context.Users.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); var profile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); if (user.EmailNotifications) { using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = RespH.SRV_NOTIF_RESERV_PENDING, CardName = card.Name, CardType = DicHelper.GetCardTypeByLang(card.Apartment.Type), CardDescription = card.Description, DateFrom = dateFrom, DateTo = dateTo, ToUserName = profile.FirstName, ToUserEmail = user.Email, CardId = card.Id, UnsubscrCode = user.EmailSubCode }; mailSender.Create(_context, bem); } } var cardUser = _context.Users.AsNoTracking().SingleOrDefault(x => x.Id == card.UserId); var cardProfile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == card.UserId); if (cardUser.EmailNotifications) { using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = RespH.SRV_NOTIF_RESERV_NEW, CardName = card.Name, CardType = DicHelper.GetCardTypeByLang(card.Apartment.Type), CardDescription = card.Description, FromUserName = profile.FirstName, DateFrom = dateFrom, DateTo = dateTo, ToUserName = cardProfile.FirstName, ToUserEmail = cardUser.Email, CardId = card.Id, UnsubscrCode = cardUser.EmailSubCode }; mailSender.Create(_context, bem); } } respList.Add(reservationGuid); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage PostApartment(ApartmentDTO apartment) { try { var respList = new List <string>(); ResponseDTO resp; // Check Apartment is not NULL if (apartment == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_NULL))); } // Check Apartment Name is not NULL resp = CheckHelper.IsNull(apartment.Name, "Name", RespH.SRV_APARTMENT_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Apartment Adress is not NULL resp = CheckHelper.IsNull(apartment.Adress, "Adress", RespH.SRV_APARTMENT_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Apartment Type is not NULL resp = CheckHelper.IsNull(apartment.Type, "Type", RespH.SRV_APARTMENT_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Generate var apartmentGuid = SequentialGuid.NewGuid().ToString(); _context.Apartments.Add(new Apartment { Id = apartmentGuid, Name = apartment.Name, Type = apartment.Type, Options = apartment.Options, UserId = account.UserId, Adress = apartment.Adress, Latitude = apartment.Latitude, Longitude = apartment.Longitude, Lang = apartment.Lang }); _context.SaveChanges(); respList.Add(apartmentGuid); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { Debug.WriteLine(ex.InnerException); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage ChangePassword(ConfirmRequest resetRequest) { try { User user; if (!string.IsNullOrEmpty(resetRequest.UserId) || !string.IsNullOrEmpty(resetRequest.Email)) { if (resetRequest.Code == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_REQUIRED, new List <string> { "code" }))); } user = !string.IsNullOrEmpty(resetRequest.UserId) ? _context.Users.SingleOrDefault(x => x.Id == resetRequest.UserId) : _context.Users.SingleOrDefault(x => x.Email == resetRequest.Email); if (user == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, new List <string> { resetRequest.UserId ?? resetRequest.Email }))); } var standartAccount = _context.Accounts.SingleOrDefault( x => x.Provider == StandartLoginProvider.ProviderName && x.UserId == user.Id); if (standartAccount == null) { var newstandartaccount = new Account { Id = SequentialGuid.NewGuid().ToString(), UserId = user.Id, AccountId = StandartLoginProvider.ProviderName + ":" + user.Email, Provider = StandartLoginProvider.ProviderName, ProviderId = user.Email }; _context.Accounts.Add(newstandartaccount); _context.SaveChanges(); } if (!user.ResetRequested) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_RESET_NOT_REQUESTED, new List <string> { resetRequest.UserId ?? resetRequest.Email }))); } var incoming = AuthUtils.Hash(resetRequest.Code, user.Salt); if (!AuthUtils.SlowEquals(incoming, user.SaltedAndHashedCode)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_WRONG_CODE, new List <string> { resetRequest.UserId ?? resetRequest.Email, resetRequest.Code }))); } user.SaltedAndHashedCode = null; user.EmailConfirmed = true; user.ResetRequested = false; } else { // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, new List <string> { currentUser.Id }))); } user = _context.Users.SingleOrDefault(x => x.Id == account.UserId); if (user == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_NOTFOUND, new List <string> { account.UserId }))); } var standartAccount = _context.Accounts.SingleOrDefault( x => x.Provider == StandartLoginProvider.ProviderName && x.UserId == user.Id); if (standartAccount == null) { var newstandartaccount = new Account { Id = SequentialGuid.NewGuid().ToString(), UserId = user.Id, AccountId = StandartLoginProvider.ProviderName + ":" + user.Email, Provider = StandartLoginProvider.ProviderName, ProviderId = user.Email }; _context.Accounts.Add(newstandartaccount); _context.SaveChanges(); } if (string.IsNullOrWhiteSpace(resetRequest.CurrentPassword)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_REQUIRED, new List <string> { "current password" }))); } if ( !AuthUtils.SlowEquals(AuthUtils.Hash(resetRequest.CurrentPassword, user.Salt), user.SaltedAndHashedPassword)) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_LOGIN_INVALID_PASS))); } } if (string.IsNullOrWhiteSpace(resetRequest.Password)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_REQUIRED, new List <string> { "password" }))); } if (resetRequest.Password.Length < 8) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_INVALID_PASSWORD, new List <string> { resetRequest.Password }))); } var salt = AuthUtils.GenerateSalt(); user.Salt = salt; user.SaltedAndHashedPassword = AuthUtils.Hash(resetRequest.Password, salt); _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_USER_RESETED, new List <string> { user.Id }))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage SetDefault(string id) { try { var respList = new List <string>(); var pic = _context.Pictures.SingleOrDefault(x => x.Id == id); if (pic == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PICTURE_NOTFOUND, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var pics = _context.Pictures.Where( x => x.Apartments.Any(a => a.UserId == account.UserId && a.Pictures.Any(p => p.Id == id))); if (pics.Any()) { foreach (var other in pics.Where(x => x.Id != id && x.Default)) { other.Default = false; } pic.Default = true; } else { if (_context.Profile.Any(x => x.Picture.Id == id && x.Id == account.UserId)) { pic.Default = true; } } if (pic.Default) { _context.MarkAsModified(pic); _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_UPDATED))); } return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_WRONG_USER))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage Post(RegistrationRequest registrationRequest) { try { var respList = new List <string>(); if (!AuthUtils.IsEmailValid(registrationRequest.Email)) { respList.Add(registrationRequest.Email); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_INVALID_EMAIL, respList))); } if (registrationRequest.Password.Length < 8) { respList.Add(registrationRequest.Password); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_INVALID_PASSWORD, respList))); } var user = _context.Users.AsNoTracking().SingleOrDefault(a => a.Email == registrationRequest.Email); if (user != null) { respList.Add(registrationRequest.Email); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_REG_EXISTS_EMAIL, respList))); } var salt = AuthUtils.GenerateSalt(); var confirmCode = AuthUtils.RandomNumString(6); var userId = SequentialGuid.NewGuid().ToString(); var newUser = new User { Id = userId, Email = registrationRequest.Email, Salt = salt, EmailSubCode = SequentialGuid.NewGuid().ToString(), SaltedAndHashedPassword = AuthUtils.Hash(registrationRequest.Password, salt), SaltedAndHashedEmail = AuthUtils.Hash(confirmCode, salt) }; _context.Users.Add(newUser); _context.SaveChanges(); AuthUtils.CreateAccount(_context, StandartLoginProvider.ProviderName, registrationRequest.Email, StandartLoginProvider.ProviderName + ":" + registrationRequest.Email, registrationRequest.Email, registrationRequest.FirstName); using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = ConstVals.Reg, ToUserId = newUser.Id, ToUserEmail = registrationRequest.Email, ToUserName = registrationRequest.FirstName, ConfirmCode = confirmCode }; mailSender.Create(_context, bem); } respList.Add(newUser.Id); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_CREATED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.ToString() }))); } }
public HttpResponseMessage DeleteApartment(string id, List <string> picIds) { try { var respList = new List <string>(); // Check Current Profile is not NULL var apartment = _context.Apartments.SingleOrDefault(a => a.Id == id); if (apartment == null) { respList.Add(id); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_NOTFOUND, respList))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } // Check Apartemtn User if (apartment.UserId != account.UserId) { respList.Add(apartment.UserId); respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_APARTMENT_WRONG_USER, respList))); } string cloudname; string apikey; string apisecret; if (!(Services.Settings.TryGetValue("CLOUDINARY_CLOUD_NAME", out cloudname) | Services.Settings.TryGetValue("CLOUDINARY_API_KEY", out apikey) | Services.Settings.TryGetValue("CLOUDINARY_API_SECRET", out apisecret))) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_PICTURE_BAD_CLOUDINARY_CRED))); } var clacc = new Account( cloudname, apikey, apisecret); var cloudinary = new Cloudinary(clacc); foreach (var picId in picIds) { var pic = _context.Pictures.SingleOrDefault(p => p.Id == picId); if (pic != null) { cloudinary.DeleteResources(pic.CloudinaryPublicId); apartment.Pictures.Remove(pic); _context.SaveChanges(); _context.Pictures.Remove(pic); _context.SaveChanges(); } } if (apartment.Pictures.Any()) { var defaultPic = apartment.Pictures.SingleOrDefault(x => x.Default); if (defaultPic == null) { var pic = _context.Pictures.SingleOrDefault(x => x.Id == apartment.Pictures.First().Id); pic.Default = true; _context.SaveChanges(); } } return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_DELETED, respList))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage ConfirmCode(ConfirmRequest confirmRequest) { try { var respList = new List <string>(); // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var user = _context.Users.SingleOrDefault(x => x.Id == account.UserId); if (user == null) { respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } if (user.PhoneStatus == ConstVals.PConf) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_PHONE_CONFIRMED, new List <string> { user.Id }))); } if (confirmRequest.Code == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_REQUIRED, new List <string> { "code" }))); } var incoming = AuthUtils.Hash(confirmRequest.Code, user.Salt); if (!AuthUtils.SlowEquals(incoming, user.SaltedAndHashedSmsCode)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_WRONG_CODE, new List <string> { user.Id, confirmRequest.Code }))); } user.SaltedAndHashedSmsCode = null; user.PhoneStatus = ConstVals.PConf; user.PhoneCodeRequestedAt = null; _context.MarkAsModified(user); _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_USER_PHONE_CONFIRMED, new List <string> { user.PhoneStatus }))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage SetFavorite(string cardId) { try { var respList = new List <string>(); // Check advertId is not NULL if (cardId == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_FAVORITE_CARDID_NULL))); } // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var currentCard = _context.Cards.AsNoTracking().SingleOrDefault(a => a.Id == cardId); if (currentCard == null) { respList.Add(cardId); return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_CARD_NOTFOUND, respList))); } if (currentCard.UserId == account.UserId) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.CreateBool(RespH.SRV_FAVORITE_WRONG_USER))); } bool status; var favorite = _context.Favorites.SingleOrDefault(f => f.CardId == cardId && f.UserId == account.UserId); if (favorite == null) { var favoriteGUID = SequentialGuid.NewGuid().ToString(); _context.Favorites.Add(new Favorite { Id = favoriteGUID, CardId = cardId, UserId = account.UserId }); _context.SaveChanges(); // Create Notification Notifications.Create(_context, currentCard.UserId, ConstVals.General, RespH.SRV_NOTIF_CARD_FAVORITED, favoriteGUID, null, null); var user = _context.Users.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); var profile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); if (user.EmailNotifications) { using (MailSender mailSender = new MailSender()) { var bem = new BaseEmailMessage { Code = RespH.SRV_NOTIF_CARD_FAVORITED, CardId = currentCard.Id, FromUserName = profile.FirstName, FromUserEmail = user.Email, ToUserName = currentCard.User.Profile.FirstName, ToUserEmail = currentCard.User.Email, UnsubscrCode = currentCard.User.EmailSubCode }; mailSender.Create(_context, bem); } } status = true; } else { var notif = _context.Notifications.SingleOrDefault(n => n.FavoriteId == favorite.Id); if (notif != null) { _context.Notifications.Remove(notif); } _context.SaveChanges(); _context.Favorites.Remove(favorite); status = false; } _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, RespH.CreateBool(RespH.SRV_DONE, new List <bool> { status }))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }
public HttpResponseMessage ReqeustCode() { try { var respList = new List <string>(); ResponseDTO resp; // Check Current User var currentUser = User as ServiceUser; if (currentUser == null) { return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_UNAUTH))); } var account = AuthUtils.GetUserAccount(_context, currentUser); if (account == null) { respList.Add(currentUser.Id); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var user = _context.Users.SingleOrDefault(x => x.Id == account.UserId); if (user == null) { respList.Add(account.UserId); return(Request.CreateResponse(HttpStatusCode.Unauthorized, RespH.Create(RespH.SRV_USER_NOTFOUND, respList))); } var profile = _context.Profile.AsNoTracking().SingleOrDefault(x => x.Id == account.UserId); resp = CheckHelper.IsNull(profile.Phone, "Phone", RespH.SRV_USER_REQUIRED); if (resp != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, resp)); } if (user.PhoneStatus == ConstVals.PConf) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_PHONE_CONFIRMED, new List <string> { user.PhoneStatus }))); } if (user.PhoneCodeRequestedAt.HasValue && user.PhoneStatus == ConstVals.PPending) { if (user.PhoneCodeRequestedAt.Value.AddMinutes(3) > DateTime.Now) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_USER_PHONE_CONFIRM_REQUESTED, new List <string> { user.PhoneCodeRequestedAt.ToString() }))); } } var confirmCode = AuthUtils.RandomNumString(4); user.SaltedAndHashedSmsCode = AuthUtils.Hash(confirmCode, user.Salt); user.PhoneCodeRequestedAt = DateTime.Now; user.PhoneStatus = ConstVals.PPending; _context.MarkAsModified(user); _context.SaveChanges(); var regArt = _context.Article.SingleOrDefault(x => x.Name == ConstVals.Reg && x.Type == ConstVals.Sms); string smstext; if (regArt != null) { smstext = confirmCode + " " + regArt.Text; } else { smstext = confirmCode; } using (SmsSender sender = new SmsSender()) { sender.Send(profile.Phone, smstext); } return(Request.CreateResponse(HttpStatusCode.OK, RespH.Create(RespH.SRV_DONE, new List <string> { user.PhoneStatus }))); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, RespH.Create(RespH.SRV_EXCEPTION, new List <string> { ex.InnerException.ToString() }))); } }