Exemplo n.º 1
0
        public ActionResult Invite(int id, InviteUserBindingModel formData)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var email      = formData.Email;
            var parameters = new List <KeyValuePair <string, string> >();

            parameters.Add(new KeyValuePair <string, string>("email", email));
            var response = RequestHelper.SendGetRequestAuth(parameters, "Household"
                                                            , "InviteUserByHhIdEmail", id, MyToken, CusHttpMethod.Post);

            return(GeneralResDealer(response, true, true, true, true));
        }
        public IHttpActionResult InviteUsers(int id, InviteUserBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userId    = User.Identity.GetUserId();
            var houseHold = DbContext.Households.FirstOrDefault(p => p.Id == id);

            if (houseHold == null)
            {
                return(NotFound());
            }

            if (userId != houseHold.OwnerOfHouseId)
            {
                return(BadRequest("Sorry, You cannot send invite to users."));
            }

            var inviteUser = DbContext.Users.FirstOrDefault(p => p.Email == model.Email);

            if (inviteUser == null)
            {
                ModelState.AddModelError("", "User doesn't not exist");
                return(BadRequest(ModelState));
            }

            if (inviteUser.Id == houseHold.OwnerOfHouseId)
            {
                return(BadRequest("You cannot invite yourself to the household."));
            }

            houseHold.InvitedUsers.Add(inviteUser);
            DbContext.SaveChanges();

            var userManager = Request.GetOwinContext().GetUserManager <ApplicationUserManager>();

            userManager.SendEmail(inviteUser.Id, "Invitation to the Household", $"You are invited to the Household with id:{houseHold.Id}.");

            return(Ok("User Invited to the Household"));
        }
Exemplo n.º 3
0
        public IHttpActionResult InviteUserByHhIdEmail(int id, InviteUserBindingModel formData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var email = formData.Email;

            var household = HouseholdHelper.GetByIdWithInvitedJoinedUsers(id);

            if (household == null)
            {
                return(NotFound());
            }

            var currentUserId = User.Identity.GetUserId();
            var IsNotOwner    = household.IsNotOwner(currentUserId);

            if (IsNotOwner)
            {
                return(Unauthorized());
            }

            var user = UserHelper.GetUserByEmail(email);

            if (user == null)
            {
                ModelState.AddModelError("email", "The user doesn't not exist");
                return(BadRequest(ModelState));
            }

            var alreadyInvited = household.AlreadyInvitedByEmail(email);
            var alreadyJoined  = household.AlreadyJoinedByEmail(email);

            if (alreadyInvited)
            {
                ModelState.AddModelError("Email", "The user was already invitated.");
                return(BadRequest(ModelState));
            }
            else if (alreadyJoined)
            {
                ModelState.AddModelError("Email", "The user was already joined. Cannot be invitated.");
                return(BadRequest(ModelState));
            }
            else
            {
                household.InvitedUsers.Add(user);
                DbContext.SaveChanges();
            }

            var eService    = new EmailService();
            var subject     = $"Invitation to Household {id}";
            var callbackUrl = Url.Link("DefaultApi",
                                       new { Action = "JoinHouseholdById", household.Id });
            var body = $"If you would like to join in it" +
                       $", plesae post the link: <a href=\"" + callbackUrl + "\">here</a> .";

            eService.Send(email, subject, body);


            var model = Mapper.Map <ShowUsersViewModel>(user);

            return(Ok(model));
        }