private ONLoperation GetOperation()
        {
            var opList = from o in dc.ONLoperations
                         where o.user_id == User.Identity.Name &&
                         o.comp_id == compID &&
                         o.state == Constants.OP_STATE_NEW
                         orderby o.op_date descending
                         select o;

            if (opList.Count() < 1)
            {
                ONLoperation opToRet = ONLoperation.CreateONLoperation(
                    iid: (dc.ONLoperations.Count() < 1) ? 1 : (dc.ONLoperations.OrderByDescending(o => o.iid).First().iid + 1),
                    comp_id: compID,
                    user_id: User.Identity.Name,
                    op_date: DateTime.UtcNow,
                    state: Constants.OP_STATE_NEW);
                return(opToRet);
            }
            else
            {
                return(opList.First());
            }
        }
        private void ConfirmCLimber()
        {
            if (String.IsNullOrEmpty(hfEditingClimber.Value))
            {
                return;
            }
            long curClmId;

            if (!long.TryParse(hfEditingClimber.Value, out curClmId))
            {
                return;
            }
            ONLClimberCompLink old;

            try { old = dc.ONLClimberCompLinks.First(l => l.iid == curClmId); }
            catch { return; }
            bool isUser = !User.IsInRole(Constants.ROLE_ADMIN, compID);

            if (isUser && !old.is_changeble)
            {
                climberEditControl.ErrMessage = "Изменение данного участника невозможно";
                return;
            }
            bool       newClm;
            ONLclimber createdClm;
            var        uCl = climberEditControl.createClimber(old.team_id.ToString(), out newClm, out createdClm);

            if (uCl == null)
            {
                return;
            }
            if (isUser && uCl.group_id != old.group_id)
            {
                climberEditControl.ErrMessage = "Для изменения возрастной группы подайте новую заявку";
                if (newClm && createdClm.EntityState != EntityState.Detached)
                {
                    dc.ONLclimbers.Detach(createdClm);
                }
                if (uCl.EntityState != EntityState.Detached)
                {
                    dc.ONLClimberCompLinks.Detach(uCl);
                }
                return;
            }
            if (newClm)
            {
                int newClmId;
                if (dc.ONLclimbers.Count() < 1)
                {
                    newClmId = 1;
                }
                else
                {
                    newClmId = dc.ONLclimbers.OrderByDescending(c => c.iid).First().iid + 1;
                }
                createdClm.iid = newClmId;
                dc.ONLclimbers.AddObject(createdClm);
                if (uCl.EntityState != EntityState.Detached)
                {
                    dc.ONLClimberCompLinks.Detach(uCl);
                }
                dc.SaveChanges();
            }

            if (User.IsInRole(Constants.ROLE_ADMIN, compID))
            {
                old.climber_id = createdClm.iid;

                ConfirmAdmin(uCl, old);
            }
            else
            {
                uCl.iid = dc.ONLClimberCompLinks.OrderByDescending(l => l.iid).First().iid + 1;

                ONLoperation nextOp = GetOperation();
                uCl.updOpIid     = nextOp.iid;
                uCl.ONLoperation = nextOp;
                uCl.climber_id   = createdClm.iid;
                uCl.ONLclimber   = createdClm;
                uCl.secretary_id = old.secretary_id;
                dc.ONLClimberCompLinks.AddObject(uCl);
                dc.SaveChanges();

                old.replacementID       = uCl.iid;
                old.ONLClimberCompLink2 = uCl;
                old.sys_date_update     = DateTime.UtcNow;
                dc.SaveChanges();

                uncList.LblMessageText = "Изменение принято. Для отправки изменений старшему тренеру Вашего региона нажмите на \"Подтвердить все заявки через e-mail\"";
            }

            ClimbingConfirmations.DeleteDeadClimbers(dc);

            panelEdit.Visible  = false;
            panelView.Enabled  = true;
            panelQueue.Enabled = true;
            FillLists();
        }
Example #3
0
        protected void btnConfirm_Click(object sender, EventArgs e)
        {
            List <ClimberLink> uList = new List <ClimberLink>();
            ONLClimberCompLink c;
            ONLclimber         outClimber;
            bool newClm;

            try
            {
                if (!ClimberControl1.IsEmpty())
                {
                    c = ClimberControl1.createClimber(cbTeam.SelectedValue, out newClm, out outClimber);
                    if (c != null)
                    {
                        uList.Add(new ClimberLink(c, outClimber, newClm));
                    }
                }
                if (!ClimberControl2.IsEmpty())
                {
                    c = ClimberControl2.createClimber(cbTeam.SelectedValue, out newClm, out outClimber);
                    if (c != null)
                    {
                        uList.Add(new ClimberLink(c, outClimber, newClm));
                    }
                }
                if (!ClimberControl3.IsEmpty())
                {
                    c = ClimberControl3.createClimber(cbTeam.SelectedValue, out newClm, out outClimber);
                    if (c != null)
                    {
                        uList.Add(new ClimberLink(c, outClimber, newClm));
                    }
                }
                if (!ClimberControl4.IsEmpty())
                {
                    c = ClimberControl4.createClimber(cbTeam.SelectedValue, out newClm, out outClimber);
                    if (c != null)
                    {
                        uList.Add(new ClimberLink(c, outClimber, newClm));
                    }
                }

                if (User.IsInRole(Constants.ROLE_ADMIN, compID))
                {
                    foreach (var v in uList)
                    {
                        v.Link.state = Constants.CLIMBER_CONFIRMED;
                    }
                }
                else
                {
                    ONLoperation currentOp;
                    try { currentOp = dc.ONLoperations.First(op => op.user_id == User.Identity.Name && op.comp_id == compID && op.state == Constants.OP_STATE_NEW); }
                    catch
                    {
                        currentOp = ONLoperation.CreateONLoperation(
                            SortingClass.GetNextIID("ONLOperations", "iid", cn, null),
                            compID, User.Identity.Name, DateTime.UtcNow, Constants.OP_STATE_NEW);
                        dc.ONLoperations.AddObject(currentOp);
                        dc.SaveChanges();
                    }
                    foreach (var v in uList)
                    {
                        v.Link.updOpIid     = currentOp.iid;
                        v.Link.ONLoperation = currentOp;
                    }
                }
                foreach (var v in uList)
                {
                    try
                    {
                        if (v.Link.EntityState != System.Data.EntityState.Detached)
                        {
                            dc.ONLClimberCompLinks.Detach(v.Link);
                        }
                    }
                    catch { }
                    try
                    {
                        if (v.NewClimber && v.Climber.EntityState != System.Data.EntityState.Detached)
                        {
                            dc.ONLclimbers.Detach(v.Climber);
                        }
                    }
                    catch { }
                }
                int    nErr;
                string erMsg;
                InsertClimberLink(uList, dc, out nErr, out erMsg);

                lblMessageTop.Text = "Заявка на " + (uList.Count - nErr) + " человек принята.";
                if (nErr > 0)
                {
                    lblMessageTop.Text += "<br />Произошли ошибки при добавлении следующих участников:<br />" + erMsg;
                }

                if (User.IsInRole(Constants.ROLE_ADMIN, compID))
                {
                    panelConfirm.Visible = false;
                    ReloadData();
                    ClearForm();
                    panelClimbers.Enabled = true;
                    panelConfirm.Visible  = false;
                }
                else
                {
                    lblMessageTop.Text += "<br />Для окончательного подтверждения заявки, после ввода всех участников, нажмите на кнопку \"" +
                                          "Подтвердить все завки через e-mail\". Старший тренер Вашего региона подтвердит все введённые заявки.";
                    panelConfirm.Visible = false;
                    ReloadData();
                    uncClm.btnAddAppEnabled = true;
                    uncClm.LblMessageText   = "";
                }
            }
            catch (Exception ex)
            {
                lblConfMessage.Text = "Ошибка добавления участников";
                if (User.IsInRole(Constants.ROLE_ADMIN, compID))
                {
                    lblConfMessage.Text += ": " + ex.Message;
                }
            }
        }