예제 #1
0
 public Settings GetSettings()
 {
     try
     {
         var s = _settingsRepository.All().Include(x => x.University).FirstOrDefault();
         return(s);
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
        public Tuple <bool, string, List <CartableViewModel>, ArgumentException> GetListCartable(long userId)
        {
            try
            {
                var ordinal1             = _settingsRepository.All().Select(s => s.Ordinal).FirstOrDefault();
                var ordinal              = (int)ordinal1;                                                          //برای مشخص کردن حالت ترتیبی یا غیر ترتیبی کارتابل
                var signers              = _signerRepository.All().Include(i => i.Post).OrderBy(o => o.RowNumber); // لیست همه امضاکنندگان کمیسیون و شورا به ترتیب
                var lastCommissionSigner = signers.Where(w => w.RequestType == RequestType.Comision).Select(s => s.RowNumber).ToList().LastOrDefault();
                var lastCouncilSigner    = signers.Where(w => w.RequestType == RequestType.Council).Select(s => s.RowNumber).ToList().LastOrDefault();

                var postsofPerson = _postPersonRepository.Where(p => p.PersonId == userId && p.Post.Signers.Any(s => s.RowNumber != 1))
                                    .Include(i => i.Post).Include(i => i.Post.Signers).ToList(); // همه سمت ها به همراه رکوردهای امضاکننده کمیسیون و شورا مربوط به یک شخص
                postsofPerson.AddRange(_userPostRepository.Where(p => p.UserId == userId && p.Post.Signers.Any(s => s.RowNumber != 1))
                                       .Include(i => i.Post).Include(i => i.Post.Signers).ToList()
                                       .Select(s => new PostPerson
                {
                    Post                  = s.Post,
                    BranchProvinceId      = s.BranchProvinceId,
                    CentralOrganizationId = s.CentralOrganizationId,
                    CollegeId             = s.CollegeId,
                    EducationalGroupId    = s.EducationalGroupId,
                    PersonId              = s.UserId,
                    PostId                = s.PostId,
                    UniversityId          = s.UniversityId
                                                                                                                                                 //Person = s.User.Person
                }).ToList());                                                                                                                    // همه سمت ها به همراه رکوردهای امضاکننده کمیسیون و شورا مربوط به یک شخص

                var postsofPersonCommission = postsofPerson.Where(p => p.Post.Signers.Any(s => s.RequestType == RequestType.Comision)).ToList(); // همه سمت ها به همراه رکوردهای امضاکننده کمیسیون مربوط به یک شخص
                var postsofPersonCouncil    = postsofPerson.Where(p => p.Post.Signers.Any(s => s.RequestType == RequestType.Council)).ToList();  // همه سمت ها به همراه رکوردهای امضاکننده شورا مربوط به یک شخص

                var listPostIdCommission = postsofPersonCommission.Select(s => s.PostId).ToList();                                               // آی دی سمت های امضاکننده مربوط به کمیسیون شخص ورودی
                var listPostIdCouncil    = postsofPersonCouncil.Select(s => s.PostId).ToList();                                                  // آی دی سمت های امضاکننده مربوط به شورا شخص ورودی

                //////var listRowNumberComision = (from postPerson in postsofPersonCommission
                //////                             from signer in postPerson.Post.Signers.Where(s => s.RequestType == RequestType.Comision)
                //////                             select (int)signer.RowNumber).ToList(); // لیست شماره ردیف امضاکننده کمیسیون مربوط به شخص ورودی
                //////var listRowNumberCouncil = (from postPerson in postsofPersonCouncil
                //////                            from signer in postPerson.Post.Signers.Where(s => s.RequestType == RequestType.Council)
                //////                            select (int)signer.RowNumber).ToList(); // لیست شماره ردیف امضاکننده شورا مربوط به شخص ورودی

                List <long> listFieldofStudy;
                var         allFieldofStudy = _fieldofStudyRepository.All();
                var         request         = new List <CartableViewModel>();
                foreach (var item in postsofPerson)
                {
                    var field = allFieldofStudy;
                    if (item.UniversityId != null)
                    {
                        field = field.Where(f => f.EducationalGroup.College.UniversityId == item.UniversityId);
                    }
                    else if (item.CollegeId != null)
                    {
                        field = field.Where(f => f.EducationalGroup.CollegeId == item.CollegeId);
                    }
                    else
                    {
                        field = field.Where(f => f.EducationalGroupId == item.EducationalGroupId);
                    }
                    listFieldofStudy = field.Select(s => s.Id).ToList();

                    foreach (var signer in item.Post.Signers)
                    {
                        request.AddRange(_requestRepository.Where(x => (x.RequestStatus == RequestStatus.InFlow &&
                                                                        x.RequestType == signer.RequestType && x.Archive == null) &&
                                                                  // در خواست درجریان
                                                                  (x.Cartables.Any(c => c.CartableValidation == CartableValidation.Valid)) &&
                                                                  // در کارتابل رکورد معتبر از این درخواست وجود داشته باشد
                                                                  (listFieldofStudy.Any(l => l.Equals(x.Person.Student.FieldofStudyId))) &&
                                                                  //درخواست در لیست رشته های تحصیلی کمیسیون مربوط به شخص ورودی باشد
                                                                  (!x.Cartables.Any(c => c.CartableValidation == CartableValidation.Valid &&
                                                                                    c.PostId == signer.PostId && c.RowNumber == signer.RowNumber)) &&
                                                                  // حداقل یک مورد از سمت های شخص در کارتابل رکورد معتبر نداشته باشد(یعنی امضا نداشته باشد)
                                                                  // یا رای موقت وجود داشته باشد
                                                                  ((ordinal != (int)Ordinal.Ordinal && signer.RowNumber <= 5) ||
                                                                   (x.Cartables.Any(c => c.CartableValidation ==
                                                                                    CartableValidation.Valid && c.RowNumber == signer.RowNumber - 1)))


                                         ////        // در حالت قبلی مورد استفاده می شد که که در صدور رای ارجا به داشته ایم
                                         ////         ((ordinal != (int)Ordinal.Ordinal && signer.RowNumber <= 5) ||
                                         ////(x.Cartables.Any(c => c.CartableValidation ==
                                         ////        CartableValidation.Valid && c.RowNumber == signer.RowNumber - 1 && c.ReferTo) ||
                                         ////        (x.RequestType == RequestType.Council && signer.RowNumber == lastCouncilSigner &&
                                         ////        x.Cartables.Any(c => c.CartableValidation ==
                                         ////        CartableValidation.Valid && c.RowNumber == signer.RowNumber - 2 && !c.ReferTo))))

                                         //////         &&// این مرحله قبلا برای مشمول بررسی می شد
                                         //////(signer.RowNumber != (x.RequestType == RequestType.Comision
                                         //////   ? lastCommissionSigners : lastCouncilSigners) ||
                                         ////////مشخص میکند که درخواست در مرحله آخر میباشد یا خیر
                                         //////(x.Vote != null && (x.RequestType != RequestType.Comision ||
                                         //////        (x.Person.Profile.Gender == Gender.Male && x.Person.Student.MilitaryServiceStatus ==
                                         //////        MilitaryServiceStatus.Included))))
                                                                  )
                                         // اگر درخواست در مرحله آخر باشد باید شرط صدور رای بررسی شود ، همچنین اگر کمیسیون باشد باید مشمول خدمت بررسی شود
                                         .Include(i => i.Vote).Include(i => i.Commission).Include(i => i.Council)
                                         .Include(i => i.Person).Include(i => i.Person.Profile).Include(i => i.Person.Student)
                                         .Include(i => i.Person.Student.FieldofStudy.OrganizationStructureName)
                                         .Select(req => new CartableViewModel
                        {
                            Request = req,
                            Person  = req.Person,
                            Profile = req.Person.Profile,
                            Student = req.Person.Student,
                            Council = req.Council,
                            OrganizationStructureName = req.Person.Student.FieldofStudy.OrganizationStructureName,
                            Commission = req.Commission,
                            //این لیست کارتابل و لیست امضا کنندگان به دلیل اشکالی که در حالت غیر ترتیبی داشت فعلا غیر فعال شده است
                            //مثلا اگر شخصی هم سمت مدیر گروه و معاون آموزشی و اختیارات مدیر کل داشته باشد
                            // به طوری که درخواست ربطی به مدیر گروه نداشته باشد یعنی زیر مجموعه آن نباشد
                            // در کارتابل درخواست در مرحله مدیر گروه نشان داده می شود که
                            // باید مدیر کل نشان داده شود
                            //Cartables =
                            //    req.Cartables.Where(c => c.CartableValidation == CartableValidation.Valid).ToList(),
                            //Signers = signers.Where(sel => sel.RequestType == req.RequestType &&
                            //                               (req.RequestType == RequestType.Comision
                            //                                   ? (listPostIdCommission.Except(req.Cartables.Where(
                            //                                       c => c.CartableValidation == CartableValidation.Valid)
                            //                                       .Select(s => s.PostId)).Any(l => l.Equals(sel.PostId)))
                            //                                   : (listPostIdCouncil.Except(
                            //                                       req.Cartables.Where(
                            //                                           c => c.CartableValidation == CartableValidation.Valid)
                            //                                           .Select(s => s.PostId)).Any(l => l.Equals(sel.PostId)))))
                            //    .ToList(),
                            Signers = signers.Where(s => s.Id == signer.Id).ToList(),
                            Signer  = signers.FirstOrDefault(s => s.Id == signer.Id),
                            LastCommissionSigner = lastCommissionSigner,
                            LastCouncilSigner    = lastCouncilSigner
                        }).ToList());
                    } //لیست رشته های تحصیلی که در زیر مجموعه سمت های کمیسیون مربوط به شخص ورودی وجود دارد
                }

                return(new Tuple <bool, string, List <CartableViewModel>, ArgumentException>(true, "", request.OrderBy(i => i.Signer.RowNumber).DistinctBy(d => d.Request.Id).ToList(), null));
            }
            catch (Exception exception)
            {
                return(new Tuple <bool, string, List <CartableViewModel>, ArgumentException>(false, "", null, new ArgumentException("", exception)));
            }
        }
예제 #3
0
 public IEnumerable <Settings> GetAllSettings()
 {
     return(_settingsRepository.All());
 }