Пример #1
0
        public static async Task <UserDetailsVM> UpdateUserProperties(string id, UserDetailsVM model)
        {
            UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
            var cntx    = Cntx;
            var details = await udsvc.LoadEntityByKeyAsync(cntx, GuidMix(ApplicationContext.App.ID, id));

            int chgcnt = 0;

            if (details.Gender != model.Gender)
            {
                details.Gender = model.Gender;
                chgcnt++;
            }
            if (!details.BirthDate.HasValue && model.BirthDate.HasValue || details.BirthDate.HasValue && !model.BirthDate.HasValue ||
                details.BirthDate.HasValue && model.BirthDate.HasValue && details.BirthDate.Value != model.BirthDate.Value)
            {
                details.BirthDate = model.BirthDate;
                chgcnt++;
            }
            if (chgcnt > 0)
            {
                details.LastModified = DateTime.UtcNow;
                udsvc.AddOrUpdateEntities(Cntx, new UserDetailSet(), new UserDetail[] { details });
            }
            return(await GetUserDetails(id, true));
        }
Пример #2
0
        public static async Task <bool> UpdateUserPhoto(string id, string mimeType, DateTime lastModified, byte[] imagedata)
        {
            UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
            var ud = await udsvc.LoadEntityByKeyAsync(Cntx, GuidMix(ApplicationContext.App.ID, id));

            ud.PhotoMime         = mimeType;
            ud.PhotoLastModified = lastModified;
            ud.Photo             = imagedata;
            ud.IsPhotoLoaded     = true;
            ud.IsPhotoModified   = true;
            ud.LastModified      = DateTime.UtcNow;
            await udsvc.AddOrUpdateEntitiesAsync(Cntx, new UserDetailSet(), new UserDetail[] { ud });

            return(true);
        }
Пример #3
0
        public static async Task <bool> CreateUserDetails(string id)
        {
            UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
            var ud = await udsvc.LoadEntityByKeyAsync(Cntx, ApplicationContext.App.ID, id);

            if (ud == null)
            {
                await udsvc.AddOrUpdateEntitiesAsync(Cntx, new UserDetailSet(), new UserDetail[] {
                    new UserDetail {
                        UserID        = id,
                        ApplicationID = ApplicationContext.App.ID,
                        CreateDate    = DateTime.UtcNow
                    }
                });
            }
            return(true);
        }
Пример #4
0
        public static async Task <ContentRecord> GetUserPhoto(string id)
        {
            UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
            var ud = await udsvc.LoadEntityByKeyAsync(Cntx, GuidMix(ApplicationContext.App.ID, id));

            if (ud == null)
            {
                return(null);
            }
            ContentRecord rec = new ContentRecord();

            rec.MimeType = ud.PhotoMime;
            if (ud.LastModified.HasValue)
            {
                rec.LastModified = ud.LastModified.Value;
            }
            rec.Data = udsvc.LoadEntityPhoto(Cntx, GuidMix(ApplicationContext.App.ID, id));
            return(rec);
        }
Пример #5
0
        public static async Task <UserDetailsVM> UpdateUserDescription(string id, UserDetailsVM model)
        {
            UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
            var cntx    = Cntx;
            var details = await udsvc.LoadEntityByKeyAsync(cntx, GuidMix(ApplicationContext.App.ID, id));

            if (details != null && !details.IsDescriptionLoaded)
            {
                details.Description = await udsvc.LoadEntityDescriptionAsync(cntx, GuidMix(ApplicationContext.App.ID, id));

                details.IsDescriptionLoaded = true;
            }
            bool changed = details.Description == null && model.Description != null || details.Description != null && model.Description == null ||
                           details.Description != null && model.Description != null && details.Description.Trim() != model.Description.Trim();

            if (changed)
            {
                details.Description  = model.Description;
                details.LastModified = DateTime.UtcNow;
                udsvc.AddOrUpdateEntities(Cntx, new UserDetailSet(), new UserDetail[] { details });
            }
            return(await GetUserDetails(id, true));
        }
Пример #6
0
        public static async Task <UserDetailsVM> GetUserDetails(string id, bool direct = false)
        {
            UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
            var cntx = Cntx;

            cntx.DirectDataAccess = direct;

            var details = await udsvc.LoadEntityByKeyAsync(cntx, GuidMix(ApplicationContext.App.ID, id));

            UserDetailsVM m = null;

            if (details != null)
            {
                if (!details.IsDescriptionLoaded)
                {
                    details.Description         = udsvc.LoadEntityDescription(cntx, GuidMix(ApplicationContext.App.ID, id));
                    details.IsDescriptionLoaded = true;
                }
                m = new UserDetailsVM {
                    Details = details
                };
                m.IsPhotoAvailable = !string.IsNullOrEmpty(details.PhotoMime);
            }
            else
            {
                m = new UserDetailsVM();
                m.IsPhotoAvailable = false;
            }
            UserDetailSet uds = new UserDetailSet();

            m.Genders = uds.GenderValues;
            QueryExpresion qexpr = new QueryExpresion();

            qexpr.OrderTks = new List <QToken>(new QToken[] {
                new QToken {
                    TkName = "ID"
                },
                new QToken {
                    TkName = "asc"
                }
            });
            CommunicationTypeServiceProxy ctsvc = new CommunicationTypeServiceProxy();
            var lct = await ctsvc.QueryDatabaseAsync(Cntx, new CommunicationTypeSet(), qexpr);

            m.ChannelTypes = lct.ToArray();
            CommunicationServiceProxy csvc = new CommunicationServiceProxy();
            var fkeys = new CommunicationSetConstraints
            {
                ApplicationIDWrap = new ForeignKeyData <string> {
                    KeyValue = ApplicationContext.App.ID
                },
                TypeIDWrap = null, // no restriction on types
                UserIDWrap = new ForeignKeyData <string> {
                    KeyValue = id
                }
            };
            var lc = await csvc.ConstraintQueryAsync(Cntx, new CommunicationSet(), fkeys, null);

            foreach (var c in lc)
            {
                c.Comment = await csvc.LoadEntityCommentAsync(Cntx, c.ID);

                c.IsCommentLoaded      = true;
                c.CommunicationTypeRef = await csvc.MaterializeCommunicationTypeRefAsync(Cntx, c);

                m.Channels.Add(new { id = c.ID, label = c.DistinctString, addr = c.AddressInfo, comment = c.Comment, typeId = c.CommunicationTypeRef.TypeName });
            }
            return(m);
        }
Пример #7
0
 public static async Task<UserDetailsVM> GetUserDetails(string id, bool direct = false)
 {
     UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
     var cntx = Cntx;
     cntx.DirectDataAccess = direct;
     var details = await udsvc.LoadEntityByKeyAsync(cntx, ApplicationContext.App.ID, id);
     UserDetailsVM m = null;
     if (details != null)
     {
         if (!details.IsDescriptionLoaded)
         {
             details.Description = udsvc.LoadEntityDescription(cntx, ApplicationContext.App.ID, id);
             details.IsDescriptionLoaded = true;
         }
         m = new UserDetailsVM { Details = details };
         m.IsPhotoAvailable = !string.IsNullOrEmpty(details.PhotoMime);
     }
     else
     {
         m = new UserDetailsVM();
         m.IsPhotoAvailable = false;
     }
     UserDetailSet uds = new UserDetailSet();
     m.Genders = uds.GenderValues;
     QueryExpresion qexpr = new QueryExpresion();
     qexpr.OrderTks = new List<QToken>(new QToken[] { 
         new QToken { TkName = "ID" },
         new QToken { TkName = "asc" }
     });
     CommunicationTypeServiceProxy ctsvc = new CommunicationTypeServiceProxy();
     var lct = await ctsvc.QueryDatabaseAsync(Cntx, new CommunicationTypeSet(), qexpr);
     m.ChannelTypes = lct.ToArray();
     CommunicationServiceProxy csvc = new CommunicationServiceProxy();
     //qexpr = new QueryExpresion();
     //qexpr.OrderTks = new List<QToken>(new QToken[] { 
     //    new QToken { TkName = "TypeID" },
     //    new QToken { TkName = "asc" }
     //});
     //qexpr.FilterTks = new List<QToken>(new QToken[] { 
     //    new QToken { TkName = "UserID" },
     //    new QToken { TkName = "==" },
     //    new QToken { TkName = "\"" + id + "\"" },
     //    new QToken { TkName = "&&" },
     //    new QToken { TkName = "ApplicationID" },
     //    new QToken { TkName = "==" },
     //    new QToken { TkName = "\"" + ApplicationContext.App.ID + "\"" }
     //});
     //var lc = await csvc.QueryDatabaseAsync(Cntx, new CommunicationSet(), qexpr);
     var fkeys = new CommunicationSetConstraints
     {
         ApplicationIDWrap = new ForeignKeyData<string> { KeyValue = ApplicationContext.App.ID },
         TypeIDWrap = null, // no restriction on types
         UserIDWrap = new ForeignKeyData<string> { KeyValue = id }
     };
     var lc = await csvc.ConstraintQueryAsync(Cntx, new CommunicationSet(), fkeys, null);
     foreach (var c in lc)
     {
         c.Comment = await csvc.LoadEntityCommentAsync(Cntx, c.ID);
         c.IsCommentLoaded = true;
         c.CommunicationTypeRef = await csvc.MaterializeCommunicationTypeRefAsync(Cntx, c);
         m.Channels.Add(new { id = c.ID, label = c.DistinctString, addr = c.AddressInfo, comment = c.Comment, typeId = c.CommunicationTypeRef.TypeName });
     }
     return m;
 }
Пример #8
0
 public static async Task<ContentRecord> GetUserPhoto(string id)
 {
     UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
     var ud = await udsvc.LoadEntityByKeyAsync(Cntx, ApplicationContext.App.ID, id);
     if (ud == null)
         return null;
     ContentRecord rec = new ContentRecord();
     rec.MimeType = ud.PhotoMime;
     if (ud.LastModified.HasValue)
         rec.LastModified = ud.LastModified.Value;
     rec.Data = udsvc.LoadEntityPhoto(Cntx, ApplicationContext.App.ID, id);
     return rec;
 }
Пример #9
0
 public static async Task<bool> UpdateUserPhoto(string id, string mimeType, DateTime lastModified, byte[] imagedata)
 {
     UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
     var ud = await udsvc.LoadEntityByKeyAsync(Cntx, ApplicationContext.App.ID, id);
     ud.PhotoMime = mimeType;
     ud.PhotoLastModified = lastModified;
     ud.Photo = imagedata;
     ud.IsPhotoLoaded = true;
     ud.IsPhotoModified = true;
     ud.LastModified = DateTime.UtcNow;
     await udsvc.AddOrUpdateEntitiesAsync(Cntx, new UserDetailSet(), new UserDetail[] { ud });
     return true;
 }
Пример #10
0
 public static async Task<UserDetailsVM> UpdateUserDescription(string id, UserDetailsVM model)
 {
     UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
     var cntx = Cntx;
     var details = await udsvc.LoadEntityByKeyAsync(cntx, ApplicationContext.App.ID, id);
     if (details != null && !details.IsDescriptionLoaded)
     {
         details.Description = await udsvc.LoadEntityDescriptionAsync(cntx, ApplicationContext.App.ID, id);
         details.IsDescriptionLoaded = true;
     }
     bool changed = details.Description == null && model.Description != null || details.Description != null && model.Description == null ||
         details.Description != null && model.Description != null && details.Description.Trim() != model.Description.Trim();
     if (changed)
     {
         details.Description = model.Description;
         details.LastModified = DateTime.UtcNow;
         udsvc.AddOrUpdateEntities(Cntx, new UserDetailSet(), new UserDetail[] { details });
     }
     return await GetUserDetails(id, true);
 }
Пример #11
0
 public static async Task<UserDetailsVM> UpdateUserProperties(string id, UserDetailsVM model)
 {
     UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
     var cntx = Cntx;
     var details = await udsvc.LoadEntityByKeyAsync(cntx, ApplicationContext.App.ID, id);
     int chgcnt = 0;
     if (details.Gender != model.Gender)
     {
         details.Gender = model.Gender;
         chgcnt++;
     }
     if (!details.BirthDate.HasValue && model.BirthDate.HasValue || details.BirthDate.HasValue && !model.BirthDate.HasValue ||
         details.BirthDate.HasValue && model.BirthDate.HasValue && details.BirthDate.Value != model.BirthDate.Value)
     {
         details.BirthDate = model.BirthDate;
         chgcnt++;
     }
     if (chgcnt > 0)
     {
         details.LastModified = DateTime.UtcNow;
         udsvc.AddOrUpdateEntities(Cntx, new UserDetailSet(), new UserDetail[] { details });
     }
     return await GetUserDetails(id, true);
 }
Пример #12
0
 public static async Task<bool> CreateUserDetails(string id)
 {
     UserDetailServiceProxy udsvc = new UserDetailServiceProxy();
     var ud = await udsvc.LoadEntityByKeyAsync(Cntx, ApplicationContext.App.ID, id);
     if (ud == null)
     {
         await udsvc.AddOrUpdateEntitiesAsync(Cntx, new UserDetailSet(), new UserDetail[] { 
             new UserDetail{
                 UserID = id,
                 ApplicationID = ApplicationContext.App.ID,
                 CreateDate = DateTime.UtcNow
             }
         });
     }
     return true;
 }