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));
        }
示例#2
0
        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));
        }
示例#4
0
 public static IHtmlContent GetIconHtmlString(this ContactItemDto contact)
 {
     return(contact?.Icon == null
         ? null
         : new HtmlString(contact.Icon));
 }