public async Task <IHttpActionResult> InviteToRegisterInCompany(Invite inviteDetail) { CervittApiResult result = new CervittApiResult(); if (inviteDetail == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } if (string.IsNullOrEmpty(inviteDetail.EmailAddress)) { throw new HttpResponseException(HttpStatusCode.BadRequest); } User user = await db.Users.SingleOrDefaultAsync(c => c.UserName == User.Identity.Name); if (user == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } if (!User.Identity.IsAuthenticated) { throw new HttpResponseException(HttpStatusCode.Unauthorized); } if (user.Company == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } string postEmailAddress = inviteDetail.EmailAddress.Replace(Environment.NewLine, ","); postEmailAddress = postEmailAddress.Replace('\r', ','); postEmailAddress = postEmailAddress.Replace('\n', ','); string[] emailListToInvite = postEmailAddress.Split(','); bool hasInvalidEmailAddressInList = false; if (emailListToInvite.Length == 0) { result.Success = false; result.ErrorMessage = "No any email address to invite."; } else { hasInvalidEmailAddressInList = EmailService.CheckAnyEmailIsNotValid(emailListToInvite); if (hasInvalidEmailAddressInList) { result.Success = false; result.ErrorMessage = "Invalid email address found or email format is not correct."; return(Ok(result)); } for (int i = 0; i <= emailListToInvite.Length - 1; i++) { if (string.IsNullOrEmpty(emailListToInvite[i])) { continue; } string emailToInvite = emailListToInvite[i].Trim(); Guid inviteCode = Guid.NewGuid(); bool userExistInSystem = await db.Users.AnyAsync(u => u.Email == emailToInvite); if (!userExistInSystem) { InviteRequest existingRequest = await db.InviteRequests.SingleOrDefaultAsync(c => c.InviteType == 1 && c.InviteToEmailAddress == emailToInvite && c.InviteFromUserId == user.Id && c.Processed == false); if (existingRequest == null) { string webSiteUrl = System.Configuration.ConfigurationManager.AppSettings["WebSiteUrl"]; string emailContent = " You have been invited by {0} to join." + "<br><br>" + "Please click below link to register and join."; emailContent = string.Format(emailContent, user.FirstName + " (" + user.Email + ")"); emailContent = emailContent + "<br><br>" + string.Format("Click here to <a href='{0}/{1}'><strong>Join</strong></a>", string.Concat(webSiteUrl, "/", "registration"), inviteCode.ToString()); string apiKey = SENDGRID_API_KEY; SendGridClient sendGridClient = new SendGridClient(apiKey, "https://api.sendgrid.com"); EmailAddress emailSender = new EmailAddress("*****@*****.**", "Cervitt"); String subject = "Invitation from Cervitt User to join."; EmailAddress emailRecipient = new EmailAddress(emailToInvite); Content content = new Content("text/html", emailContent); SendGridMessage mail = MailHelper.CreateSingleEmail(emailSender, emailRecipient, subject, "", emailContent); dynamic response = sendGridClient.SendEmailAsync(mail); InviteRequest inviteRequest = new InviteRequest(); inviteRequest.InviteType = 1; inviteRequest.Processed = false; inviteRequest.InviteDate = DateTime.Now; inviteRequest.InviteCode = inviteCode; inviteRequest.InviteFromCompanyId = user.Company.ID; inviteRequest.InviteFromUserId = user.Id; inviteRequest.InviteToEmailAddress = emailToInvite; inviteRequestService.Insert(inviteRequest); result.Success = true; result.SuccessMessage += emailToInvite + ","; } } } } if (result.Success) { if (result.SuccessMessage.EndsWith(",")) { result.SuccessMessage = result.SuccessMessage.TrimEnd(','); } result.SuccessMessage = "Invite request has been sent to " + result.SuccessMessage; } else { result.ErrorMessage = "Invite request not sent. (Possible reason: Either email is invalid, email already exist or request already sent.)"; } return(Ok(result)); }
public async Task <IHttpActionResult> UpdateProductTeamMemberMutiple(List <ProductTeamMemberUpdateDTO> productTeamMemberUpdateDTO) { CervittApiResult result = new CervittApiResult(); string userName = User.Identity.Name; User user = db.Users.Where(_user => _user.UserName == userName).SingleOrDefault(); if (user == null) { throw new HttpResponseException(HttpStatusCode.Unauthorized); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (productTeamMemberUpdateDTO == null || productTeamMemberUpdateDTO.Count == 0) { return(BadRequest("Invalid data or no any data passed.")); } long userId = productTeamMemberUpdateDTO.FirstOrDefault().UserID; db.ProductTeamMembers.RemoveRange(db.ProductTeamMembers.Where(u => u.UserID == userId)); await db.SaveChangesAsync(); foreach (ProductTeamMemberUpdateDTO postItem in productTeamMemberUpdateDTO) { if (postItem.ProductID <= 0 || postItem.UserID <= 0) { continue; } Product product = db.Products.Where(_product => _product.ID == postItem.ProductID) .Include(_product => _product.TeamMembers .Select(teamMember => teamMember.User)) .SingleOrDefault(); if (product != null) { UserLevel userLevel = db.UserLevels.SingleOrDefault(c => c.Id == postItem.UserLevelId); bool isAdmin = false; if (userLevel.Name.ToLower() == "admin") { isAdmin = true; } ProductTeamMember productTeamMember = product.TeamMembers.Where(_productTeamMember => _productTeamMember.UserID == postItem.UserID).SingleOrDefault(); if (productTeamMember == null) { productTeamMember = new ProductTeamMember(); productTeamMember.CanEditTheProduct = isAdmin; productTeamMember.ProductID = postItem.ProductID; productTeamMember.UserID = postItem.UserID; productTeamMember.UserLevelId = postItem.UserLevelId; db.ProductTeamMembers.Add(productTeamMember); await db.SaveChangesAsync(); } else { productTeamMember.Role = postItem.Role; productTeamMember.UserLevelId = postItem.UserLevelId; productTeamMember.CanEditTheProduct = isAdmin; db.Entry(productTeamMember).State = EntityState.Modified; await db.SaveChangesAsync(); } } } result.Success = true; result.SuccessMessage = "Records updated successfully."; result.ErrorMessage = ""; return(Ok(result)); }