public HouseHoldController() { DbContext = new ApplicationDbContext(); CustomEmailService = new CustomEmailService(); Validation = new Validation(); }
public IHttpActionResult InviteUser(int id, InviteUserBidingModel formData) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var isHouseHoldExit = Validation.IsHouseHoldExist(id); if (!isHouseHoldExit) { ModelState.AddModelError("HouserHoldId", "Sorry, The household does not exist on the database"); return(BadRequest(ModelState)); } var userId = User.Identity.GetUserId(); var isUserOnwerOfHouseHold = Validation.IsOwnerOfHouseHold(id, userId); if (!isUserOnwerOfHouseHold) { ModelState.AddModelError("UserId", "Sorry, you are not the owner of this houseHold"); return(BadRequest(ModelState)); } var isUserRegistered = DbContext.Users.Any(p => p.Email == formData.Email); if (!isUserRegistered) { ModelState.AddModelError("UserInvite", "This email is not registered yet"); return(BadRequest(ModelState)); } var isUserMemberOfHouseHold = DbContext.HouseHoldUsers.Any(p => p.HouseHoldId == id && p.User.Email == formData.Email); if (isUserMemberOfHouseHold) { ModelState.AddModelError("UserInvite", "This user(email) is already in this household"); return(BadRequest(ModelState)); } var invitationExist = DbContext.Invitations.Any(p => p.HouseHoldId == id && p.UserEmail == formData.Email); if (invitationExist) { ModelState.AddModelError("UserInvite", "This Email was on the list of invitation already"); return(BadRequest(ModelState)); } var invitation = new Invitation(); invitation.UserEmail = formData.Email; invitation.HouseHoldId = id; var houseHold = DbContext.HouseHolds.FirstOrDefault(p => p.Id == id && p.OwnerId == userId); houseHold.Invitations.Add(invitation); DbContext.SaveChanges(); MailAddress userEmailAddress = new MailAddress(formData.Email); var message = new MailMessage(); message.From = new MailAddress("*****@*****.**", "MailSystem"); message.To.Add(userEmailAddress); message.Subject = "HouseHold Invitaion"; message.Body = "HouseHold Name : " + houseHold.Name + ", HouseHold ID : " + houseHold.Id; CustomEmailService.Sending(message); return(Ok()); }