public async Task <IHttpActionResult> PostAsync(int projectId, [FromBody] ContactItemDto model, CancellationToken cancellationToken) { if (model == null || !ModelState.IsValid) { return(BadRequest()); } var project = await _projectManager.FindByIdAsync(projectId, cancellationToken); await ApiSecurity.AuthorizeAsync(project, AccessPermission.CanEdit, cancellationToken); var sponsor = default(ContactItem); if (model.SponsorId != null) { sponsor = await _projectManager.GetContactByIdAsync((int)model.SponsorId, cancellationToken); } var contact = new ContactItem { Sponsor = sponsor, FacebookId = model.FacebookId, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, NickName = model.NickName, Gender = model.Gender, Birthday = model.Birthday, Phones = model.Phones, Comment = model.Comment }; var validationResult = await _projectManager.AddContactAsync(project, contact, cancellationToken); if (!validationResult.Succeeded) { return(this.ValidationContent(validationResult)); } return(CreatedAtRoute("Project.Contacts.GetById", new RouteValueDictionary { { "id", contact.Id } }, contact)); }
public static IHtmlContent GetValueHtmlString(this ContactItemDto contact) { if (contact == null) { return(null); } var type = !string.IsNullOrWhiteSpace(contact.Url) ? ContactItemTypes.Link : ContactItemTypes.PlainText; switch (type) { case ContactItemTypes.PlainText: return(new HtmlString($"<span>{contact.Value}</span>")); case ContactItemTypes.Link: return(new HtmlString($"<a href=\"{contact.Url}\" target=\"_blank\">{contact.Value}</a>")); default: return(new HtmlString($"Unknown contact type: {type.ToString()}")); } }
public async Task <IHttpActionResult> PutAsync(int id, [FromBody] ContactItemDto model, CancellationToken cancellationToken) { if (model == null || !ModelState.IsValid) { return(BadRequest()); } var contact = await _projectManager.GetContactByIdAsync(id, ContactField.Project, cancellationToken); if (contact == null) { return(NotFound()); } var project = await _projectManager.FindByIdAsync(contact.Project.Id, cancellationToken); await ApiSecurity.AuthorizeAsync(project, AccessPermission.CanEdit, cancellationToken); var sponsor = default(ContactItem); if (model.SponsorId != null) { sponsor = await _projectManager.GetContactByIdAsync((int)model.SponsorId, cancellationToken); } contact.Sponsor = sponsor; contact.FacebookId = model.FacebookId; contact.Email = model.Email; contact.FirstName = model.FirstName; contact.LastName = model.LastName; contact.NickName = model.NickName; contact.Gender = model.Gender; contact.Birthday = model.Birthday; contact.Phones = model.Phones; contact.Comment = model.Comment; await _projectManager.ReplaceContactAsync(project, contact, contact, cancellationToken); return(Ok(contact)); }
public static IHtmlContent GetIconHtmlString(this ContactItemDto contact) { return(contact?.Icon == null ? null : new HtmlString(contact.Icon)); }