示例#1
0
        public async Task <IActionResult> GetFriend(long id)
        {
            Friend friend = await _context.Friend.FindAsync(id);

            if (friend == null)
            {
                return(NotFound());
            }


            FriendDTO friendDTO = new FriendDTO
            {
                Name                = friend.Name,
                FamilyName          = friend.FamilyName,
                PatronymicName      = friend.PatronymicName,
                Telephone           = friend.Telephone,
                TextQRcode          = friend.TextQRcode,
                qrCodeImageAsBase64 = friend.ByteQrcode != null?QRcodeServices.BytecodeQRinStringImageAsBase64(friend.ByteQrcode) : null
            };

            return(Ok(friendDTO));
        }
示例#2
0
        public IActionResult RegenerateQRCodes()
        {
            List <string> errors  = new List <string>();
            List <Friend> friends = _context.Friend.Where(f => f.TextQRcode != null && !f.TextQRcode.Trim().Equals("")).ToList();

            foreach (Friend frnd in friends)
            {
                //frnd.ByteQrcode = QRcodeServices.GenerateQRcodeFile(frnd.FamilyName + " " + frnd.Name + " " + frnd.PatronymicName, frnd.DateBirth.Value.Date.ToString("d"), NameServer + WayController + '?' + NameQRcodeParametrs + '=' + frnd.TextQRcode, "png", WayPathQrCodes);
                frnd.ByteQrcode = QRcodeServices.GenerateQRcodeFile(frnd.FamilyName + " " + frnd.Name + " " + frnd.PatronymicName, frnd.DateBirth.Value.Date.ToString("d"), frnd.TextQRcode, "png", WayPathQrCodes);

                try
                {
                    _context.Update(frnd);
                    _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    errors.Add("Ошибка: " + frnd.IdFriend.ToString());
                    continue;
                }
            }

            return(Ok(errors));
        }
示例#3
0
        public async Task <IActionResult> Details(long?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var friend = await _context.Friend
                         .Include(f => f.City)
                         .Include(f => f.CityDistrict)
                         .Include(f => f.ElectoralDistrict)
                         .Include(f => f.FieldActivity)
                         .Include(f => f.GroupU)
                         .Include(f => f.House)
                         .Include(f => f.MicroDistrict)
                         .Include(f => f.Station)
                         .Include(f => f.Street)
                         .Include(f => f.User)
                         .Include(f => f.FriendStatus)
                         .Include(f => f.Organization_)
                         .FirstOrDefaultAsync(m => m.IdFriend == id);

            if (friend == null)
            {
                return(NotFound());
            }

            if (friend.ByteQrcode != null)
            {
                try
                {
                    friend.QRcodeBytes = QRcodeServices.BitmapToBytes(QRcodeServices.CreateBitmapFromBytes(friend.ByteQrcode));
                }
                catch (Exception ex) { }
            }
            return(View(friend));
        }
示例#4
0
        public async Task <IActionResult> Edit(long id, [Bind("IdFriend,FamilyName,Name,PatronymicName,DateBirth,Unpinning,CityId,CityDistrictId,ElectoralDistrictId,StreetId,MicroDistrictId,HouseId,Building,Apartment,Telephone,StationId,PollingStationId,Organization,FieldActivityId,PhoneNumberResponsible,DateRegistrationSite,VotingDate,Voter,Adress,TextQRcode,Qrcode,Email,Description,GroupUId,FriendStatusId,OrganizationId")] Friend friend)
        {
            if (id != friend.IdFriend)
            {
                return(NotFound());
            }

            int selectedIndexCityDistrict = 1;

            if (ModelState.IsValid)
            {
                DateTime dateEmpty = new DateTime();
                if (!friend.Name.Equals("") && !friend.FamilyName.Equals("") && friend.DateBirth != dateEmpty)
                {
                    friend.FamilyName = friend.FamilyName != null?friend.FamilyName.Trim() : null;

                    friend.Name = friend.Name != null?friend.Name.Trim() : null;

                    friend.PatronymicName = friend.PatronymicName != null?friend.PatronymicName.Trim() : null;

                    friend.TextQRcode = friend.TextQRcode != null?friend.TextQRcode.Trim() : null;

                    List <Friend> searchFriend = _context.Friend.Include(f => f.GroupU).Where(frnd => frnd.Name.Trim().Equals(friend.Name) && frnd.FamilyName.Trim().Equals(friend.FamilyName) && frnd.PatronymicName.Trim().Equals(friend.PatronymicName) && frnd.DateBirth.Value.Date == friend.DateBirth.Value.Date && frnd.IdFriend != friend.IdFriend).ToList();

                    if (friend.DateBirth.Value.Year < 1900 || friend.DateBirth.Value.Year > 2003)
                    {
                        ModelState.AddModelError("", "Дата рождения меньше 1900 или больше 2003!");
                    }
                    else if (searchFriend.Count == 0)
                    {
                        Friend friendQrText      = null;
                        Friend friendNumberPhone = null;
                        if (friend.TextQRcode != null && !friend.TextQRcode.Trim().Equals(""))
                        {
                            friendQrText = ServiceFriends.FindUserByQRtext(friend.TextQRcode);
                        }
                        if (friend.Telephone != null && !friend.Telephone.Trim().Equals(""))
                        {
                            friendNumberPhone = ServiceFriends.FindUserByPhoneNumber(ServicePhoneNumber.LeaveOnlyNumbers(friend.Telephone));
                        }

                        if ((friendQrText == null || friendQrText.IdFriend == friend.IdFriend) && (friendNumberPhone == null || friendNumberPhone.IdFriend == friend.IdFriend))
                        {
                            User userSave = _context.User.Where(u => u.UserName.Equals(User.Identity.Name)).FirstOrDefault();
                            friend.UserId = userSave.IdUser;
                            //friend.GroupUId = userSave.Groupsusers.First().GroupUId;
                            if (friend.TextQRcode != null && !friend.TextQRcode.Trim().Equals(""))
                            {
                                friend.ByteQrcode = QRcodeServices.GenerateQRcodeFile(friend.FamilyName + " " + friend.Name + " " + friend.PatronymicName, friend.DateBirth.Value.Date.ToString("d"), NameServer + WayController + '?' + NameQRcodeParametrs + '=' + friend.TextQRcode, "png", WayPathQrCodes);
                            }
                            //friend.Qrcode = fileNameQRcode;

                            if (friend.CityId != 1)
                            {
                                friend.CityDistrictId = null;
                                friend.StreetId       = null;
                                friend.HouseId        = null;
                                friend.Apartment      = null;

                                if (friend.Adress != null && friend.Adress.Trim().Length > 5)
                                {
                                    if (friend.Unpinning)
                                    {
                                        Station station;
                                        try
                                        {
                                            station = _context.Station.Find(friend.StationId);
                                        }
                                        catch
                                        {
                                            station = null;
                                        }
                                        if (station != null)
                                        {
                                            try
                                            {
                                                _context.Update(friend);
                                                await _context.SaveChangesAsync();
                                            }
                                            catch (DbUpdateConcurrencyException)
                                            {
                                                if (!FriendExists(friend.IdFriend))
                                                {
                                                    return(NotFound());
                                                }
                                                else
                                                {
                                                    throw;
                                                }
                                            }
                                            return(RedirectToAction(nameof(Index)));
                                        }
                                        else
                                        {
                                            ModelState.AddModelError("", "Не указан участок!");
                                        }
                                    }
                                    else if (!friend.Unpinning)
                                    {
                                        friend.StationId           = null;
                                        friend.ElectoralDistrictId = null;
                                        try
                                        {
                                            _context.Update(friend);
                                            await _context.SaveChangesAsync();
                                        }
                                        catch (DbUpdateConcurrencyException)
                                        {
                                            if (!FriendExists(friend.IdFriend))
                                            {
                                                return(NotFound());
                                            }
                                            else
                                            {
                                                throw;
                                            }
                                        }
                                        return(RedirectToAction(nameof(Index)));
                                    }
                                    else
                                    {
                                        ModelState.AddModelError("", "Не указан участок!");
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("", "Не корректно заполнено поле с адресом!");
                                }
                            }
                            else
                            {
                                friend.Adress = null;

                                if (friend.HouseId != null && friend.StationId != null)
                                {
                                    House   house;
                                    Station station;
                                    try
                                    {
                                        house   = _context.House.Find(friend.HouseId);
                                        station = _context.Station.Find(friend.StationId);
                                    }
                                    catch
                                    {
                                        house   = null;
                                        station = null;
                                    }
                                    if (house != null && house.Name != null && !house.Name.Equals("") && !house.Name.Equals(" ") && station != null && station.Name != null && !station.Name.Equals(""))
                                    {
                                        try
                                        {
                                            _context.Update(friend);
                                            await _context.SaveChangesAsync();
                                        }
                                        catch (DbUpdateConcurrencyException)
                                        {
                                            if (!FriendExists(friend.IdFriend))
                                            {
                                                return(NotFound());
                                            }
                                            else
                                            {
                                                throw;
                                            }
                                        }
                                        return(RedirectToAction(nameof(Index)));
                                    }
                                    else
                                    {
                                        ModelState.AddModelError("", "Не указан полный адрес или не выбран участок!");
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("", "Не указан полный адрес или не выбран участок!");
                                }
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "Участник с данными телефоном или QR-кодом, уже был внесен в списки ранее!");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "Участник с данными ФИО и датой рождения уже был внесен ранее в списки в " + searchFriend[0].GroupU.Name + "!");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Не все поля были заполнены");
                }
            }

            List <Groupu> groupsUser = _serviceUser.GetGroupsUser(User.Identity.Name);

            int[] idFieldActivityUser = groupsUser.Select(g => g.FieldActivityId ?? 0).ToArray();
            int[] idOrganizationUser  = groupsUser.Select(g => g.OrganizationId ?? 0).ToArray();

            ViewData["GroupUId"] = new SelectList(groupsUser, "IdGroup", "Name", friend.GroupUId);
            ViewData["CityId"]   = new SelectList(_context.City, "IdCity", "Name", friend.CityId);
            List <CityDistrict> cityDistricts = _context.CityDistrict.Where(cd => cd.CityId == friend.CityId).ToList();

            ViewData["CityDistrictId"]      = new SelectList(cityDistricts, "IdCityDistrict", "Name", friend.CityDistrictId);
            ViewData["ElectoralDistrictId"] = new SelectList(_context.ElectoralDistrict, "IdElectoralDistrict", "Name", friend.ElectoralDistrictId);
            List <Fieldactivity> fieldactivitiesSelect = _context.Fieldactivity.Where(fac => idFieldActivityUser.Contains(fac.IdFieldActivity)).ToList();

            ViewData["FieldActivityId"] = new SelectList(fieldactivitiesSelect, "IdFieldActivity", "Name", friend.FieldActivityId);
            List <Organization> organizationSelect = _context.Organization.Where(org => idOrganizationUser.Contains(org.IdOrganization)).ToList();

            ViewData["OrganizationId"]  = new SelectList(organizationSelect, "IdOrganization", "Name", friend.OrganizationId);
            ViewData["MicroDistrictId"] = new SelectList(_context.Microdistrict, "IdMicroDistrict", "Name", friend.MicroDistrictId);

            List <Street> selectStreets = _context.Street.Where(s => s.CityId == friend.CityDistrictId).ToList();

            selectStreets.Sort((s1, s2) => s1.Name.CompareTo(s2.Name));
            ViewData["StreetId"] = new SelectList(selectStreets, "IdStreet", "Name", friend.StreetId);

            List <House> selectHouse = _context.House.Where(h => h.StreetId == friend.StreetId).ToList();

            selectHouse.Sort((h1, h2) => h1.Name.CompareTo(h2.Name));
            ViewData["HouseId"] = new SelectList(selectHouse, "IdHouse", "Name", friend.HouseId);

            if (friend.CityDistrictId == null || friend.Unpinning)
            {
                List <PollingStation> polingStations = _context.PollingStation.Where(p => p.CityDistrictId == selectedIndexCityDistrict).ToList().GroupBy(p => p.Name).Select(grp => grp.FirstOrDefault()).ToList();
                int[]          stationsId            = polingStations.Select(p => p.StationId ?? 0).ToArray();
                List <Station> stations = _context.Station.Where(s => stationsId.Contains(s.IdStation)).ToList();
                //stations.Sort((s1, s2) => Convert.ToInt32(s1.Name) - Convert.ToInt32(s2.Name));
                stations.Sort();
                stations.Insert(0, new Station {
                    IdStation = 0, Name = ""
                });
                ViewData["StationId"] = new SelectList(stations, "IdStation", "Name", friend.StationId);
            }
            else
            {
                List <PollingStation> polingStations = _context.PollingStation.Where(p => p.CityDistrictId == friend.CityDistrictId).ToList().GroupBy(p => p.Name).Select(grp => grp.FirstOrDefault()).ToList();
                int[]          stationsId            = polingStations.Select(p => p.StationId ?? 0).ToArray();
                List <Station> stations = _context.Station.Where(s => stationsId.Contains(s.IdStation)).ToList();
                //stations.Sort((s1, s2) => Convert.ToInt32(s1.Name) - Convert.ToInt32(s2.Name));
                stations.Sort();
                stations.Insert(0, new Station {
                    IdStation = 0, Name = ""
                });
                ViewData["StationId"] = new SelectList(stations, "IdStation", "Name", friend.StationId);
            }


            ViewData["UserId"]         = new SelectList(_context.User, "IdUser", "UserName", friend.UserId);
            ViewData["FriendStatusId"] = new SelectList(_context.FriendStatus, "IdFriendStatus", "Name", friend.FriendStatusId);

            return(View(friend));
        }