public IHttpActionResult Post(int contactId, [FromBody] ObjectAttributeDTO objectAttribute)
 {
     return(Authorized(token =>
     {
         var configuration = MpObjectAttributeConfigurationFactory.MyContact();
         _objectAttributeService.SaveObjectMultiAttribute(token, contactId, objectAttribute, configuration);
         return this.Ok();
     }));
 }
Beispiel #2
0
        public void UpdateSkills(int participantId, List <GoSkills> skills, string token)
        {
            MpObjectAttributeConfiguration configuration;

            if (token == String.Empty)
            {
                token         = _apiUserService.GetToken();
                configuration = MpObjectAttributeConfigurationFactory.Contact();
            }
            else
            {
                configuration = MpObjectAttributeConfigurationFactory.MyContact();
            }

            var contactObs = Observable.Start(() => _contactService.GetContactByParticipantId(participantId));

            contactObs.Subscribe(con =>
            {
                var attrs = Observable.Start(() => _objectAttributeService.GetObjectAttributes(token, con.Contact_ID, configuration));

                attrs.Subscribe(attr =>
                {
                    var curSk = attr.MultiSelect
                                .FirstOrDefault(kvp => kvp.Value.AttributeTypeId == _configurationWrapper.GetConfigIntValue("AttributeTypeIdSkills")).Value.Attributes
                                .Where(attribute => attribute.Selected).ToList();

                    var skillsEndDate = SkillsToEndDate(skills, curSk).Select(sk =>
                    {
                        sk.EndDate = DateTime.Now;
                        return(sk);
                    });

                    var addSkills    = SkillsToAdd(skills, curSk).ToList();
                    var allSkills    = addSkills.Concat(skillsEndDate).ToList();
                    var allSkillsObs = allSkills.ToObservable();
                    try
                    {
                        allSkillsObs.ForEachAsync(skill =>
                        {
                            _objectAttributeService.SaveObjectMultiAttribute(token, con.Contact_ID, skill, configuration, true);
                        });
                    }
                    catch (Exception e)
                    {
                        throw new ApplicationException("Updating skills caused an error");
                    }
                });
            });
        }