private void bProlong_Click(object sender, EventArgs e)
 {
     if (DialogResult.Yes == MessageBox.Show("Вы действительно хотите продлить права бесплатного абонемента?", "Подтверждение", MessageBoxButtons.YesNo))
     {
         if (reader.Rights[ReaderRightsEnum.FreeAbonement] != null)
         {
             if (reader.Rights[ReaderRightsEnum.FreeAbonement].DateEndReaderRight.Date <= DateTime.Today.Date)
             {
                 reader.ProlongRights(ReaderRightsEnum.FreeAbonement);
                 reader = ReaderInfo.GetReader(reader.NumberReader);
                 this.Init(reader.NumberReader);
             }
             else
             {
                 MessageBox.Show("Срок действия прав ещё не окончен!");
                 return;
             }
         }
         else
         {
             MessageBox.Show("Отсутствуют права бесплатного абонемента!");
             return;
         }
         MessageBox.Show("Права бесплатного абонемента успешно продлены!");
     }
 }
Пример #2
0
        public HttpResponseMessage ByEmail()
        {
            string    JSONRequest = Request.Content.ReadAsStringAsync().Result;
            UserEmail request     = new UserEmail();

            try
            {
                request = JsonConvert.DeserializeObject <UserEmail>(JSONRequest, ALISSettings.ALISDateFormatJSONSettings);
            }
            catch
            {
                return(ALISErrorFactory.CreateError("G001", Request));
            }


            ReaderInfo reader;

            try
            {
                reader = ReaderInfo.GetReader(request.Email);
            }
            catch (Exception ex)
            {
                return(ALISErrorFactory.CreateError(ex.Message, Request));
            }
            if (reader == null)
            {
                return(ALISErrorFactory.CreateError("R004", Request));
            }
            ReaderSimpleView result = ReaderViewFactory.GetReaderSimpleView(reader);

            return(ALISResponseFactory.CreateResponse(result, Request));
        }
        public void Init(int NumberReader)
        {
            reader      = ReaderInfo.GetReader(NumberReader);
            label1.Text = "Адрес фактического проживания или временной регистрации в России №" + reader.NumberReader + ".\n " + reader.FamilyName + " " + reader.Name + " " + reader.FatherName;

            Dictionary <int, string> CountryTable = ReaderInfo.GetCountriesList();
            BindingSource            bs           = new BindingSource(CountryTable, null);

            cbCountry.DataSource    = bs;
            cbCountry.ValueMember   = "Key";
            cbCountry.DisplayMember = "Value";
            cbCountry.SelectedValue = reader.RegistrationCountry;

            tbRegion.Text   = reader.LiveRegion;
            tbProvince.Text = reader.LiveProvince;
            tbDistrict.Text = reader.LiveDistrict;
            tbCity.Text     = reader.LiveCity;
            tbStreet.Text   = reader.LiveStreet;
            tbHouse.Text    = reader.LiveHouse;
            tbFlat.Text     = reader.LiveFlat;
            if (reader.MobileTelephone.Length == 14)
            {
                tbMobilePhoneCode.Text = reader.MobileTelephone.Substring(3, 3);
                tbMobilePhone.Text     = reader.MobileTelephone.Substring(7, 7);
            }
            tbEmail.Text = reader.Email;
            readerRightsView1.Init(NumberReader);

            DisableAll();
        }
Пример #4
0
        public HttpResponseMessage SetPasswordLocalReader()
        {
            string JSONRequest = Request.Content.ReadAsStringAsync().Result;
            SetPasswordLocalReader request;

            try
            {
                request = JsonConvert.DeserializeObject <SetPasswordLocalReader>(JSONRequest, ALISSettings.ALISDateFormatJSONSettings);
            }
            catch
            {
                return(ALISErrorFactory.CreateError("G001", Request));
            }

            ReaderInfo reader;

            try
            {
                reader = ReaderInfo.GetReader(request.ReaderId);
            }
            catch (Exception ex)
            {
                return(ALISErrorFactory.CreateError("R004", Request));
            }
            try
            {
                reader.SetPasswordLocalReader(request, reader);
            }
            catch (Exception ex)
            {
                return(ALISErrorFactory.CreateError(ex.Message, Request));
            }

            return(ALISResponseFactory.CreateResponse(Request));
        }
        private void bGiveFreeAbonementRight_Click(object sender, EventArgs e)
        {
            if (AllEnabled)
            {
                MessageBox.Show("Выйдите их режима редактирования! Нажмите кнопку \"Сохранить\"!");
                return;
            }
            if (reader.Rights[ReaderRightsEnum.FreeAbonement] != null)
            {
                MessageBox.Show("Права бесплатного абонемента уже выданы!");
                return;
            }
            if (reader.RegistrationCity == "" || reader.RegistrationStreet == "" ||
                reader.RegistrationHouse == "" || reader.RegistrationFlat == "" || reader.MobileTelephone == "")
            {
                MessageBox.Show("Перед выдачей прав необходимо обязательно указать все поля, отмеченные звёздочкой!");
                return;
            }

            TimeSpan Age      = (DateTime.Now - reader.DateBirth);
            DateTime zeroTime = new DateTime(1, 1, 1);
            int      Years    = (zeroTime + Age).Year - 1;

            if (Years < 14)
            {
                MessageBox.Show("Бесплатный абонемент не выдаётся до достижения 14 летнего возраста!");
                return;
            }
            reader.Rights.GiveFreeAbonementRight();
            reader = ReaderInfo.GetReader(reader.NumberReader);
            this.Init(reader.NumberReader);
            MessageBox.Show("Права бесплатного абонемента успешно выданы!");
        }
Пример #6
0
        private void button2_Click(object sender, EventArgs e)
        {
            //f1.FrmlrFam(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
            if (dataGridView1.SelectedRows.Count == 0)
            {
                MessageBox.Show("Читатель не выбран!");
                return;
            }
            ReaderInfo reader = ReaderInfo.GetReader((int)dataGridView1.SelectedRows[0].Cells[0].Value);

            f1.FillFormular(reader);
            Close();
        }
Пример #7
0
        public void IssueElectronicCopyToReader(int IDREADER)
        {
            ReaderInfo        reader = ReaderInfo.GetReader(IDREADER);
            BJDatabaseWrapper dbw    = new BJDatabaseWrapper(this.Fund);

            byte[] random = new byte[20];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

            rng.GetBytes(random); // The array is now filled with cryptographically strong random bytes.
            string ViewKey         = Convert.ToBase64String(random);
            int    IssuePeriodDays = 30;

            dbw.IssueElectronicCopyToReader(this.ID, IssuePeriodDays, ViewKey, IDREADER, reader.TypeReader);
        }
Пример #8
0
        public HttpResponseMessage Get(int ReaderId)
        {
            ReaderInfo reader;

            try
            {
                reader = ReaderInfo.GetReader(ReaderId);
            }
            catch (Exception ex)
            {
                return(ALISErrorFactory.CreateError(ex.Message, Request));
            }
            ReaderSimpleView result = ReaderViewFactory.GetReaderSimpleView(reader);

            return(ALISResponseFactory.CreateResponse(result, Request));
        }
Пример #9
0
        public HttpResponseMessage IsBirthDateMatchReaderId()
        {
            string JSONRequest = Request.Content.ReadAsStringAsync().Result;
            BirthDateMatchReaderId request;

            try
            {
                request = JsonConvert.DeserializeObject <BirthDateMatchReaderId>(JSONRequest, ALISSettings.ALISDateFormatJSONSettings);
            }
            catch
            {
                return(ALISErrorFactory.CreateError("G001", Request));
            }

            ReaderInfo reader;

            try
            {
                reader = ReaderInfo.GetReader(request.ReaderId);
            }
            catch (Exception ex)
            {
                return(ALISErrorFactory.CreateError("R004", Request));
            }
            BooleanResponse result = new BooleanResponse();

            try
            {
                result.Result = reader.IsBirthDateMatchReaderId(request);
            }
            catch (Exception ex)
            {
                return(ALISErrorFactory.CreateError(ex.Message, Request));
            }

            return(ALISResponseFactory.CreateResponse(result, Request));
        }
Пример #10
0
        public static void Register(HttpConfiguration config)
        {
            //// Uncomment the following to use the documentation from XML documentation file.
            config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/Documentation/documentation.xml")));

            //// Uncomment the following to use "sample string" as the sample for all actions that have string as the body parameter or return type.
            //// Also, the string arrays will be used for IEnumerable<string>. The sample objects will be serialized into different media type
            //// formats by the available formatters.
            //config.SetSampleObjects(new Dictionary<Type, object>
            //{
            //    {typeof(string), "sample string"},
            //    {typeof(IEnumerable<string>), new string[]{"sample 1", "sample 2"}}
            //});

            // Extend the following to provide factories for types not handled automatically (those lacking parameterless
            // constructors) or for which you prefer to use non-default property values. Line below provides a fallback
            // since automatic handling will fail and GeneratePageResult handles only a single type.
#if Handle_PageResultOfT
            config.GetHelpPageSampleGenerator().SampleObjectFactories.Add(GeneratePageResult);
#endif

            // Extend the following to use a preset object directly as the sample for all actions that support a media
            // type, regardless of the body parameter or return type. The lines below avoid display of binary content.
            // The BsonMediaTypeFormatter (if available) is not used to serialize the TextSample object.
            config.SetSampleForMediaType(
                new TextSample("Binary JSON content. See http://bsonspec.org for details."),
                new MediaTypeHeaderValue("application/bson"));

            //// Uncomment the following to use "[0]=foo&[1]=bar" directly as the sample for all actions that support form URL encoded format
            //// and have IEnumerable<string> as the body parameter or return type.
            //config.SetSampleForType("[0]=foo&[1]=bar", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(IEnumerable<string>));

            //// Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values"
            //// and action named "Put".
            //config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put");

            //// Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png"
            //// on the controller named "Values" and action named "Get" with parameter "id".
            //config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id");

            //// Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>.
            //// The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter.
            //config.SetActualRequestType(typeof(string), "Values", "Get");

            //// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>.
            //// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string.
            //config.SetActualResponseType(typeof(string), "Values", "Post");


            ReaderInfo reader = ReaderInfo.GetReader(189245);
            //Readers.Get
            ReaderSimpleView rsv  = ReaderViewFactory.GetReaderSimpleView(reader);
            string           json = JsonConvert.SerializeObject(rsv, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Readers", "Get");


            //Readers.GetByOauthToken
            AccessToken token = new AccessToken();
            token.TokenValue = "jhgfjfg*%&$*FKGfkfKfI^(*&^5&^TGVfjtgfdtre$E65r86T87t)(*7goYGV986T98^&Go8yg";
            json             = JsonConvert.SerializeObject(token, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "GetByOauthToken");

            json = JsonConvert.SerializeObject(rsv, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Readers", "GetByOauthToken");

            ////Readers.ChangePasswordLocalReader
            //ChangePasswordLocalReader password = new ChangePasswordLocalReader();
            //password.DateBirth = "1984-02-14";// new DateTime(1984, 2, 14);
            //password.NewPassword = "******";
            //password.NumberReader = 189245;
            //json = JsonConvert.SerializeObject(password, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            //config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "ChangePasswordLocalReader");

            //Readers.GetLoginType
            LoginType ltype = new LoginType();
            ltype.LoginTypeValue = "Email";
            json = JsonConvert.SerializeObject(ltype, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Readers", "GetLoginType");
            UserLogin ul = new UserLogin();
            ul.Login = "******";
            json     = JsonConvert.SerializeObject(ul, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "GetLoginType");


            //Readers.ByEmail
            UserEmail ue = new UserEmail();
            ue.Email = "*****@*****.**";
            json     = JsonConvert.SerializeObject(ue, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "ByEmail");
            json = JsonConvert.SerializeObject(rsv, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Readers", "ByEmail");



            //Readers.Authorize
            AuthorizeInfo aut = new AuthorizeInfo();
            aut.login    = "******";
            aut.password = "******";
            json         = JsonConvert.SerializeObject(aut, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "Authorize");
            config.SetSampleForType(aut, new MediaTypeHeaderValue("application/json"), typeof(AuthorizeInfo));
            config.SetActualRequestType(typeof(AuthorizeInfo), "Readers", "Authorize");
            json = JsonConvert.SerializeObject(rsv, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Readers", "Authorize");

            //Readers / IsBirthDateMatchReaderId
            BirthDateMatchReaderId match = new BirthDateMatchReaderId();
            match.DateBirth = "1984-02-14";
            match.ReaderId  = 189245;
            BooleanResponse br = new BooleanResponse();
            br.Result = true;
            json      = JsonConvert.SerializeObject(match, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "IsBirthDateMatchReaderId");
            json = JsonConvert.SerializeObject(br, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Readers", "IsBirthDateMatchReaderId");

            //Readers/SetPasswordLocalReader
            SetPasswordLocalReader spwd = new SetPasswordLocalReader();
            spwd.NewPassword = "******";
            spwd.ReaderId    = 189245;
            json             = JsonConvert.SerializeObject(spwd, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "SetPasswordLocalReader");


            //Books.Get
            BookSimpleView book;
            book = ViewFactory.GetBookSimpleView("BJVVV_1411951");
            json = JsonConvert.SerializeObject(book, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Books", "Get");

            //Circulation.InsertIntoUserBasket
            ImpersonalBasket basket = new ImpersonalBasket();
            basket.BookIdArray = new List <string>();
            basket.BookIdArray.AddRange(new string[] { "BJVVV_1299121", "BJVVV_1304618", "REDKOSTJ_31866", "REDKOSTJ_43090" });
            basket.ReaderId = 189245;
            json            = JsonConvert.SerializeObject(basket, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Circulation", "InsertIntoUserBasket");

            //Circulation.Basket
            CirculationInfo   circ       = new CirculationInfo();
            List <BasketInfo> UserBasket = circ.GetBasket(888);
            json = JsonConvert.SerializeObject(UserBasket, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Circulation", "Basket");

            //Circulation.Order
            circ = new CirculationInfo();
            MakeOrder mo = new MakeOrder();
            mo.BookId      = "BJVVV_1078762";
            mo.ReaderId    = 100000;
            mo.OrderTypeId = 2;
            json           = JsonConvert.SerializeObject(mo, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Circulation", "Order");


            //Circulation.Orders
            List <OrderInfo> UserOrders = circ.GetOrders(155);
            json = JsonConvert.SerializeObject(UserOrders, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Circulation", "Orders");
            //Circulation.Basket    Delete
            BasketDelete bd = new BasketDelete();
            bd.BooksToDelete.Add("BJVVV_1299121");
            bd.BooksToDelete.Add("BJVVV_1491232");
            bd.ReaderId = 200500;
            json        = JsonConvert.SerializeObject(bd, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Circulation", "DeleteFromBasket");

            //Circulation.OrdersHistory
            List <OrderHistoryInfo> UserOrdersHistory = circ.GetOrdersHistory(100000);
            json = JsonConvert.SerializeObject(UserOrdersHistory, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Circulation", "OrdersHistory");


            //Readers.PreRegisterRemoteReader
            PreRegisterRemoteReader re = new PreRegisterRemoteReader();
            re.BirthDate   = "1975-05-05";//new DateTime(1975, 05, 05);
            re.CountryId   = 137;
            re.Email       = "*****@*****.**";
            re.FamilyName  = "Иванов";
            re.FatherName  = "Иванович";
            re.MobilePhone = "89551234567";
            re.Name        = "Иван";
            re.Password    = "******";
            json           = JsonConvert.SerializeObject(re, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "PreRegisterRemoteReader");

            //Readers.ConfirmRegistrationRemoteReader
            ConfirmRegistrationRemoteReader c = new ConfirmRegistrationRemoteReader();
            c.Url = "https://oauth.libfl.ru/activate/<activation code>";
            json  = JsonConvert.SerializeObject(c, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "ConfirmRegistrationRemoteReader");

            //Readers.ChangePasswordByEmail
            ChangePasswordByEmail em = new ChangePasswordByEmail();
            em.Email = "*****@*****.**";
            json     = JsonConvert.SerializeObject(em, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "ChangePasswordByEmail");

            //Readers.SetPasswordRemoteReader
            SetPasswordRemoteReader set = new SetPasswordRemoteReader();
            set.Url      = "https://oauth.libfl.ru/recovery/<recovery code>";
            set.Password = "******";
            json         = JsonConvert.SerializeObject(set, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "SetPasswordRemoteReader");

            //Readers.CheckPasswordUrl
            CheckPasswordUrl check = new CheckPasswordUrl();
            check.Url = "https://oauth.libfl.ru/recovery/<recovery code>";
            json      = JsonConvert.SerializeObject(check, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleRequest(json, new MediaTypeHeaderValue("application/json"), "Readers", "CheckPasswordUrl");

            //GET Litres/Account/{ReaderId}
            LitresInfo li = new LitresInfo();
            li.Login    = "******";
            li.Password = "******";
            json        = JsonConvert.SerializeObject(li, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Litres", "LitresAccount");
            //POST Litres/AssignAccount/{ReaderId}
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Litres", "AssignLitresAccount");


            //Circulation / Orders / ById /{ OrderId}
            OrderInfo oi = circ.GetOrder(22);
            json = JsonConvert.SerializeObject(oi, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Circulation", "OrdersById");

            //Books/ElectronicCopy/{id}
            ElectronicCopyFullView ec = ViewFactory.GetElectronicCopyFullView("BJVVV_138023");
            json = JsonConvert.SerializeObject(ec, Formatting.Indented, ALISSettings.ALISDateFormatJSONSettings);
            config.SetSampleResponse(json, new MediaTypeHeaderValue("application/json"), "Books", "GetElectronicCopyFullView");
        }
Пример #11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string IDMAIN = Request["pin"];
        string IDBASE = Request["idbase"];

        string IDReader = Request.QueryString["idreader"];

        if (IDReader == null)
        {
            IDReader = User.Identity.Name;
            //Response.Write("User.Identity.Name " + IDReader);
            if (IDReader == string.Empty)
            {
                Response.Write("Неизвестная ошибка");
                return;
            }
        }
        //else
        //{
        //    Response.Write("Request" + IDReader);
        //}
        //string vkey = Request["vkey"];
        string BaseName = (IDBASE == "1") ? "BJVVV" : "REDKOSTJ";


        ReaderInfo readerAPI = ReaderInfo.GetReader(int.Parse(IDReader));


        ExemplarLoader loader = new ExemplarLoader(BaseName);

        DataProviderAPI.ValueObjects.ElectronicExemplarInfoAPI exemplar = loader.GetElectronicExemplarInfo(BaseName + "_" + IDMAIN);



        if (exemplar.ForAllReader)//открытый БЕЗ авторского права
        {
            RedirectToNewViewer(IDMAIN, true, "", IDReader);
        }
        else    //ЗАКРЫТЫЕ АВТОРСКИМ ПРАВОМ
        {
            BJBookInfo book   = BJBookInfo.GetBookInfoByPIN(int.Parse(IDMAIN), BaseName);
            ReaderInfo reader = ReaderInfo.GetReader(int.Parse(IDReader));

            if (!book.IsElectronicCopyIssued())//если книга не выдана никому, то проверяем ограничения, потом неявно выдаём и перенаправляем на вьювер
            {
                if (CheckLimitations(book, reader))
                {
                    return;
                }
                book.IssueElectronicCopyToReader(reader.NumberReader);
                string ViewKey = book.GetElectronicViewKeyForReader(reader.NumberReader);
                RedirectToNewViewer(IDMAIN, false, ViewKey, IDReader);
            }
            else
            {
                if (!book.IsElectronicCopyIsuuedToReader(reader.NumberReader))//если этому читателю не выдана эта книга, то проверяем ограничения
                {
                    if (CheckLimitations(book, reader))
                    {
                        return;
                    }
                    //если ограничения не сработали, то выдаём и перенаправляем
                    book.IssueElectronicCopyToReader(reader.NumberReader);
                    string ViewKey = book.GetElectronicViewKeyForReader(reader.NumberReader);
                    RedirectToNewViewer(IDMAIN, false, ViewKey, IDReader);
                }
                else//если этому читателю выдана эта книга
                {
                    string ViewKey = book.GetElectronicViewKeyForReader(reader.NumberReader);
                    RedirectToNewViewer(IDMAIN, false, ViewKey, IDReader);
                }
            }
        }
    }
Пример #12
0
        private void button1_Click(object sender, EventArgs e)
        {
            ReaderInfo r = ReaderInfo.GetReader(189245);

            textBox1.Text = r.FamilyName;
        }
        private void bSave_Click(object sender, EventArgs e)
        {
            if (tbMobilePhone.Text.Length > 14)
            {
                MessageBox.Show("Поле Мобильный телефон не может содержать более 14 символов!");
                return;
            }
            if (tbEmail.Text != string.Empty
                &&
                !Regex.IsMatch(tbEmail.Text,
                               @"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" +
                               @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$"))
            {
                MessageBox.Show("Поле Email имеет неверный формат!");
                return;
            }
            if (tbMobilePhone.Text == string.Empty
                ||
                tbMobilePhoneCode.Text == string.Empty)
            {
                MessageBox.Show("Мобильный телефон не заполнен полностью!");
                return;
            }
            if (tbMobilePhoneCode.Text.Length != 3)
            {
                MessageBox.Show("Код мобильного телефона должен содержать 3 цифры!");
                return;
            }
            if (tbMobilePhone.Text.Length != 7)
            {
                MessageBox.Show("Номер мобильного телефона должен содержать 7 цифр!");
                return;
            }
            if (!int.TryParse(tbMobilePhoneCode.Text, out int ParsedPhone))
            {
                MessageBox.Show("Код мобильного телефона имеет неверный формат!");
                return;
            }
            if (!int.TryParse(tbMobilePhone.Text, out ParsedPhone))
            {
                MessageBox.Show("Код мобильного телефона имеет неверный формат!");
                return;
            }


            //reader.RegistrationCountry = (int)cbCountry.SelectedValue;
            reader.LiveCity        = tbCity.Text;
            reader.LiveDistrict    = tbDistrict.Text;
            reader.LiveFlat        = tbFlat.Text;
            reader.LiveHouse       = tbHouse.Text;
            reader.LiveProvince    = tbProvince.Text;
            reader.LiveRegion      = tbRegion.Text;
            reader.LiveStreet      = tbStreet.Text;
            reader.MobileTelephone = (tbMobilePhoneCode.Text == string.Empty) ? string.Empty : $"+7({tbMobilePhoneCode.Text}){tbMobilePhone.Text}";
            reader.Email           = tbEmail.Text;

            //reader.UpdateRegistrationFields();
            reader.UpdateLiveFields();
            DisableAll();
            reader = ReaderInfo.GetReader(reader.NumberReader);
            MessageBox.Show("Регистрационные данные обновлены");
        }
Пример #14
0
        public void MakeOrder(MakeOrder request)
        {
            //BookBase book = new BookBase()
            BJBookInfo     book           = BJBookInfo.GetBookInfoByPIN(request.BookId);
            BookSimpleView bookSimpleView = ViewFactory.GetBookSimpleView(request.BookId);

            ReaderInfo reader = ReaderInfo.GetReader(request.ReaderId);
            List <int> acceptableOrderTypes = GetAcceptableOrderTypesForReader(request.BookId, request.ReaderId);

            if (!acceptableOrderTypes.Contains(request.OrderTypeId))
            {
                throw new Exception("C013");
            }

            if (request.OrderTypeId == OrderTypes.ElectronicVersion.Id)
            {
                if (this.ElectronicIssueCount(reader) >= 5)
                {
                    throw new Exception("C001");
                }
                if (this.IsElectronicIssueAlreadyIssued(reader, book))
                {
                    throw new Exception("C002");
                }
                //в простой вид книги искусственно добавляется электронный экземпляр
                if (bookSimpleView.Exemplars.Count - this.GetBusyExemplarsCount(book) <= 0)
                {
                    throw new Exception("C003");
                }
                if (!this.IsTwentyFourHoursPastSinceReturn(reader, book))
                {
                    throw new Exception("C004");
                }
                BJElectronicExemplarInfo exemplar = new BJElectronicExemplarInfo(book.ID, book.Fund);
                //BJExemplarInfo exemplar = BJExemplarInfo(book.ID, book.Fund);
                this.NewOrder(exemplar, reader, request.OrderTypeId, 30);
            }
            else
            {
                if (this.IsBookAlreadyIssuedToReader(book, reader))
                {
                    throw new Exception("C006");
                }

                //ExemplarSimpleView exemplarSimpleView;
                bool IsOrderedSuccessfully = false;
                switch (request.OrderTypeId)
                {
                case OrderTypes.PaperVersion.Id:
                    //приоритет для книг, которые в хранении, чтобы их принесли на кафедру для читателя
                    foreach (BJExemplarInfo e in book.Exemplars)
                    {
                        if (e.Fields["899$a"].MNFIELD == 0)
                        {
                            continue;
                        }
                        if (e.ExemplarAccess.Access == 1000)
                        {
                            if (!this.IsExemplarIssued(e))
                            {
                                this.NewOrder(e, reader, OrderTypes.PaperVersion.Id, 4);
                                IsOrderedSuccessfully = true;
                                break;
                            }
                        }
                    }
                    if (IsOrderedSuccessfully)
                    {
                        break;
                    }
                    //если свободных книг в хранении не осталось, то ищем те, которые в отрытом доступе. это будет самостоятельный заказ
                    foreach (BJExemplarInfo e in book.Exemplars)
                    {
                        if (e.Fields["899$a"].MNFIELD == 0)
                        {
                            continue;
                        }
                        if ((e.ExemplarAccess.Access == 1006))
                        {
                            if (!this.IsExemplarIssued(e))
                            {
                                this.NewOrder(e, reader, OrderTypes.SelfOrder.Id, 4);
                                IsOrderedSuccessfully = true;
                                break;
                            }
                        }
                    }
                    if (IsOrderedSuccessfully)
                    {
                        break;
                    }
                    else
                    {
                        throw new Exception("C009");
                    }

                case OrderTypes.InLibrary.Id:
                    //тут опять приоритет у тех, которые надо заказать из книгохранения перед самостоятельным заказом
                    foreach (BJExemplarInfo e in book.Exemplars)
                    {
                        if (e.Fields["899$a"].MNFIELD == 0)
                        {
                            continue;
                        }
                        if ((e.ExemplarAccess.Access == 1005) || (e.ExemplarAccess.Access == 1012))
                        {
                            if (!this.IsExemplarIssued(e))
                            {
                                this.NewOrder(e, reader, OrderTypes.InLibrary.Id, 4);
                                IsOrderedSuccessfully = true;
                                break;
                            }
                        }
                    }
                    if (IsOrderedSuccessfully)
                    {
                        break;
                    }
                    //если свободных книг в хранении не осталось, то ищем те, которые в отрытом доступе. это будет самостоятельный заказ
                    foreach (BJExemplarInfo e in book.Exemplars)
                    {
                        if (e.Fields["899$a"].MNFIELD == 0)
                        {
                            continue;
                        }
                        if ((e.ExemplarAccess.Access == 1007) || (e.ExemplarAccess.Access == 1014))
                        {
                            if (!this.IsExemplarIssued(e))
                            {
                                this.NewOrder(e, reader, OrderTypes.SelfOrder.Id, 4);
                                IsOrderedSuccessfully = true;
                                break;
                            }
                        }
                    }
                    if (IsOrderedSuccessfully)
                    {
                        break;
                    }
                    else
                    {
                        throw new Exception("C010");
                    }

                //это никогда не придёт
                case OrderTypes.NoActionProvided.Id:
                    throw new Exception("C008");

                case OrderTypes.ClarifyAccess.Id:
                    throw new Exception("C008");

                default:
                    throw new Exception("C008");
                }
            }
        }
Пример #15
0
        private List <int> GetAcceptableOrderTypesForReader(string bookId, int readerId)
        {
            List <int> result = new List <int>();
            BJBookInfo book   = BJBookInfo.GetBookInfoByPIN(bookId);
            ReaderInfo reader = ReaderInfo.GetReader(readerId);

            foreach (BJExemplarInfo exemplar in book.Exemplars)
            {
                if (exemplar.Fields["929$b"].MNFIELD != 0)//списано
                {
                    continue;
                }
                int AcceptableOrderType = this.GetExemplarAcceptableOrderType(exemplar);
                if (AcceptableOrderType == 0)
                {
                    continue;
                }
                if (!result.Contains(AcceptableOrderType))
                {
                    result.Add(AcceptableOrderType);
                }
            }
            if (null != reader.Rights.RightsList.FirstOrDefault(x => x.ReaderRightValue == ReaderRightsEnum.Employee))
            {
                //кароче здесь надо написать логику, если это суотрудник или оплаченный абонемент, то в зал заменить на на дом
                //но так как при выдаче всё равно всё встанет на свои места, то для экономи времени пропустим это.
            }
            if (reader.IsRemoteReader)
            {
                result.Remove(OrderTypes.InLibrary.Id);
                result.Remove(OrderTypes.PaperVersion.Id);
                result.Remove(OrderTypes.ClarifyAccess.Id);
                if (result.Count == 0)
                {
                    result.Add(OrderTypes.OrderProhibited.Id);
                }
            }
            if (book.DigitalCopy != null)
            {
                if (book.DigitalCopy.ExemplarAccess.Access == 1002)
                {
                    result.Add(3);
                }
                if (book.DigitalCopy.ExemplarAccess.Access == 1001)
                {
                    result.Add(6);
                }
            }

            return(result.Distinct().ToList());
            //{ 1000,   "Заказать через личный кабинет, для получения на дом пройти в Зал абонементного обслуживания 2 этаж"},
            //{ 1001,   "Свободый электронный доступ"},
            //{ 1002,   "Доступ через авторизацию читателя(удаленного читателя)"},
            //{ 1003,   "Электронный доступ в электронном зале НЭБ, читальные зал(3 этаж)"},
            //{ 1004,   "ЛитРес:Иностранка"},
            //{ 1005,   "Заказать через личный кабинет, для получения заказа пройти в Зал выдачи документов 2 этаж"},
            //{ 1006,   "Проследовать в зал местонахождения экземпляра для получения книги на дом"},
            //{ 1007,   "Проследовать в зал местонахождения экземпляра, взять самостоятельно для чтения книги в помещении"},
            //{ 1008,   "Pearson:Иностранка"},
            //{ 1009,   "Печать по требованию"},
            //{ 1010,   "Проследовать в зал местонахождения экземпляра. Возможность выдачи уточните у сотрудника"},
            //{ 1011,   "Книга находится на выставке в зале местонахождения экземпляра"},
            //{ 1012,   "Спец.вид. Заказать через личный кабинет, проследовать в Зал выдачи документов 2 этаж. Сотрудник поможет Вам с дополнительным оборудованием для просмотра."},
            //{ 1013,   "Книга находится в обработке"},
            //{ 1014,   "Проследовать в Зал редкой книги 4 этаж"},
            //{ 1016,   "Проследовать в Зал редкой книги 4 этаж. Возможность доступа уточните у сотрудника."},
            //{ 1017,   "Проследовать в Зал выдачи документов 2 этаж. Возможность доступа уточните у сотрудника."},
            //{ 1020,   "Экстремистская литература.Не попадает в индекс.Обрабатывать не нужно."},
            //{ 1999,   "Невозможно определить доступ"},
        }
Пример #16
0
    public ReaderInfo GetUser(string login)
    {
        string CommandText = "";
        int NumberReader = 0;
        bool Check = false;
        if (int.TryParse(login, out NumberReader))
        {
            CommandText = "select * from Readers..Main where NumberReader = @Login";
        }
        else
            if (login.Length == 19)
            {
                for (int i = 0; i < 19; i++)
                {
                    if (!int.TryParse(login[i].ToString(), out NumberReader))
                    {
                        Check = true;
                        break;
                    }
                }
                if (!Check)//значит 19 цифр. типа номер социалки вбил
                {
                    CommandText = "select * from Readers..Main where NumberSC = @Login";
                }
            }
            else //не номер, и не социалка, значит email
            {
                CommandText = "select * from Readers..Main where Email = @Login";
            }
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = new SqlCommand();
        da.SelectCommand.Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ReadersConnection_OnlyRead"].ConnectionString);
        da.SelectCommand.Parameters.AddWithValue("Login", login);
        da.SelectCommand.CommandText = CommandText;
        DataSet ds = new DataSet();
        int cnt = da.Fill(ds);
        if (cnt == 0) throw new Exception("Читатель не найден!");
        if (cnt > 1) throw new Exception("Таких Email найдено больше одного! Введите номер читателя!");



        ReaderInfo ri = ReaderInfo.GetReader((int)ds.Tables[0].Rows[0]["NumberReader"]);

        //ri.NumberReader = ds.Tables[0].Rows[0]["NumberReader"].ToString();
        //ri.FamilyName = ds.Tables[0].Rows[0]["FamilyName"].ToString();
        //ri.Name = ds.Tables[0].Rows[0]["Name"].ToString();
        //ri.FatherName = ds.Tables[0].Rows[0]["FatherName"].ToString();
        //ri.DateBirth = (DateTime)ds.Tables[0].Rows[0]["DateBirth"];
        //ri.IsRemoteReader = (bool)ds.Tables[0].Rows[0]["TypeReader"];
        //ri.BarCode = ds.Tables[0].Rows[0]["BarCode"].ToString();
        //ri.DateRegistration = (DateTime)ds.Tables[0].Rows[0]["DateRegistration"];
        //ri.DateReRegistration = (DateTime)ds.Tables[0].Rows[0]["DateReRegistration"];
        //ri.Email = ds.Tables[0].Rows[0]["Email"].ToString();
        //ri.HashedPassword = ds.Tables[0].Rows[0]["Password"].ToString();
        //ri.MobileTelephone = ds.Tables[0].Rows[0]["MobileTelephone"].ToString();
        //ri.Salt = ds.Tables[0].Rows[0]["WordReg"].ToString();
        
        //try
        //{
        //    ri.WorkDepartment = Convert.ToInt32(ds.Tables[0].Rows[0]["WorkDepartment"]);
        //}
        //catch
        //{
        //    ri.WorkDepartment = 0;
        //}
            
        return ri;
    }
Пример #17
0
        public void ShowReaderOrders()
        {
            dgwReaders.Rows.Clear();
            dgwReaders.Columns.Clear();
            KeyValuePair <string, string>[] columns =
            {
                new KeyValuePair <string, string> ("pin",       "ПИН"),
                new KeyValuePair <string, string> ("author",    "Автор"),
                new KeyValuePair <string, string> ("title",     "Заглавие"),
                new KeyValuePair <string, string> ("inv",       "Инв. номер"),
                new KeyValuePair <string, string> ("cipher",    "Расст. шифр"),
                new KeyValuePair <string, string> ("readerid",  "Номер читателя"),
                new KeyValuePair <string, string> ("fio",       "ФИО читателя"),
                new KeyValuePair <string, string> ("startdate", "Дата формирования заказа"),
                new KeyValuePair <string, string> ("orderid",   "orderid"),
                new KeyValuePair <string, string> ("status",    "Статус заказа"),
                new KeyValuePair <string, string> ("note",      "Инв. метка"),
                new KeyValuePair <string, string> ("pubdate",   "Дата издания"),
                new KeyValuePair <string, string> ("refusual",  "Причина отказа"),
                new KeyValuePair <string, string> ("iddata",    "iddata")
            };
            foreach (var c in columns)
            {
                dgwReaders.Columns.Add(c.Key, c.Value);
            }

            dgwReaders.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
            dgwReaders.RowTemplate.DefaultCellStyle.WrapMode        = System.Windows.Forms.DataGridViewTriState.True;
            dgwReaders.Columns["startdate"].DefaultCellStyle.Format = "dd.MM.yyyy HH:mm";
            dgwReaders.Columns["pin"].Width       = 74;
            dgwReaders.Columns["author"].Width    = 125;
            dgwReaders.Columns["title"].Width     = 265;
            dgwReaders.Columns["inv"].Width       = 80;
            dgwReaders.Columns["cipher"].Width    = 100;
            dgwReaders.Columns["readerid"].Width  = 80;
            dgwReaders.Columns["fio"].Width       = 120;
            dgwReaders.Columns["startdate"].Width = 80;
            dgwReaders.Columns["orderid"].Visible = false;
            dgwReaders.Columns["status"].Width    = 100;
            dgwReaders.Columns["note"].Width      = 60;
            dgwReaders.Columns["pubdate"].Visible = false;
            dgwReaders.Columns["iddata"].Visible  = false;
            CirculationInfo  circulation = new CirculationInfo();
            List <OrderInfo> orders      = circulation.GetOrdersForStorage(bjUser.SelectedUserStatus.DepId, bjUser.SelectedUserStatus.DepName, CirculationStatuses.EmployeeLookingForBook.Value);

            if (bjUser.SelectedUserStatus.DepId == 8)//0 и 4 этаж должны получать заказы в одну точку
            {
                List <OrderInfo> orders1 = circulation.GetOrdersForStorage(15, "…Хран… Сектор книгохранения - 0 этаж");
                foreach (OrderInfo o in orders1)
                {
                    orders.Add(o);
                }
            }
            if (bjUser.SelectedUserStatus.DepId == 15)
            {
                List <OrderInfo> orders1 = circulation.GetOrdersForStorage(8, "…Хран… Сектор книгохранения - 4 этаж");
                foreach (OrderInfo o in orders1)
                {
                    orders.Add(o);
                }
            }
            foreach (var order in orders)
            {
                BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByIdData(order.ExemplarId, order.Fund);
                ReaderInfo     reader   = ReaderInfo.GetReader(order.ReaderId);
                dgwReaders.Rows.Add();
                var row = dgwReaders.Rows[dgwReaders.Rows.Count - 1];

                row.Cells["startdate"].Value = order.StartDate;
                row.Cells["pin"].Value       = order.BookId.Substring(order.BookId.IndexOf("_") + 1);
                row.Cells["author"].Value    = order.Book.Author;
                row.Cells["title"].Value     = order.Book.Title;
                row.Cells["inv"].Value       = exemplar.Fields["899$p"].ToString();
                row.Cells["cipher"].Value    = exemplar.Cipher;
                row.Cells["readerid"].Value  = order.ReaderId;

                row.Cells["fio"].Value = (string.IsNullOrEmpty(reader.FatherName)) ? $"{reader.FamilyName} {reader.Name.Substring(0, 1)}." :
                                         $"{reader.FamilyName} {reader.Name.Substring(0, 1)}. { reader.FatherName.Substring(0, 1)}.";
                row.Cells["orderid"].Value  = order.OrderId;
                row.Cells["status"].Value   = order.StatusName;
                row.Cells["note"].Value     = exemplar.Fields["899$x"].ToString();
                row.Cells["pubdate"].Value  = order.Book.PublishDate;
                row.Cells["iddata"].Value   = order.ExemplarId;
                row.Cells["refusual"].Value = string.IsNullOrEmpty(order.Refusual) ? "<нет>" : order.Refusual;
            }
        }