Exemplo n.º 1
0
 public HouseHoldController()
 {
     DbContext          = new ApplicationDbContext();
     CustomEmailService = new CustomEmailService();
     Validation         = new Validation();
 }
Exemplo n.º 2
0
        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());
        }