Example #1
0
        public IActionResult Start([FromBody] OneTableHash data)
        {
            if (ModelState.IsValid)
            {
                using (var db = new RaidaContext())
                {
                    List <SyncMemberInfo> syncData = db.Members.Select(it => new SyncMemberInfo()
                    {
                        Descript = it.description_fragment,
                        LastUse  = it.last_use,
                        Login    = it.login,
                        NickName = it.nick_name,
                        Password = it.pass,
                        Online   = it.online,
                        Photo    = it.photo_fragment,
                        Hash     = SyncData.GetHash(it)
                    }).ToList();
                    var memberInfo = CollectionData(data.ActualMembers, syncData);

                    List <SyncGroupInfo> syncDataGroup = db.Groups.Select(it => new SyncGroupInfo()
                    {
                        Id         = it.group_id,
                        Name       = it.group_name_part,
                        PeerToPeer = it.one_to_one,
                        Photo      = it.photo_fragment,
                        Privated   = it.privated,
                        Owner      = it.owner.login,
                        Hash       = SyncData.GetHash(it)
                    }).ToList();
                    var groupInfo = CollectionData(data.ActualGroups, syncDataGroup);


                    List <SyncMembInGroupInfo> syncDataMiG = db.MemberInGroup.Include(m => m.member).ToList().Select(
                        it =>
                        new SyncMembInGroupInfo()
                    {
                        GroupId = it.groupId,
                        Login   = it.member.login,
                        Hash    = SyncData.GetHash(it)
                    }).ToList();
                    var mingInfo = CollectionData(data.ActualMinG, syncDataMiG);

                    var objRez = CryptoUtils.EncryptDataAES(new { memberInfo, groupInfo, mingInfo });
                    objRez.key = CryptoUtils.EncryptKeyRSA(data.PublicKey, objRez.key);

                    return(new ObjectResult(new { objRez.key, objRez.code }));
                }
            }

            return(NotFound());
        }