コード例 #1
0
ファイル: ContractLogic.cs プロジェクト: sergeysy/Novelco
 public int CreateContractMark(ContractMark entity)
 {
     using (var db = new LogistoDb())
     {
         return(Convert.ToInt32(db.InsertWithIdentity(entity)));
     }
 }
コード例 #2
0
        public ContentResult ToggleContractRejected(int contractId, string comment)
        {
            var legalId      = contractLogic.GetContract(contractId).LegalId;
            var contractorId = legalLogic.GetLegal(legalId).ContractorId.Value;

            var mark = contractLogic.GetContractMarkByContract(contractId);

            if (mark == null)
            {
                mark = new ContractMark {
                    ContractId = contractId
                }
            }
            ;

            if (mark.IsContractRejected)
            {
                // проверка прав участника
                if (!participantLogic.IsAllowedActionByContractor(33, contractorId, CurrentUserId))
                {
                    return(Content(JsonConvert.SerializeObject(new { ActionId = 33, Message = "У вас недостаточно прав на выполнение этого действия." })));
                }

                mark.IsContractRejected      = false;
                mark.ContractRejectedDate    = null;
                mark.ContractRejectedUserId  = null;
                mark.ContractRejectedComment = "";
            }
            else
            {
                // проверка прав участника
                if (!participantLogic.IsAllowedActionByContractor(33, contractorId, CurrentUserId))
                {
                    return(Content(JsonConvert.SerializeObject(new { ActionId = 33, Message = "У вас недостаточно прав на выполнение этого действия." })));
                }

                mark.IsContractRejected      = true;
                mark.ContractRejectedDate    = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified);
                mark.ContractRejectedUserId  = CurrentUserId;
                mark.ContractRejectedComment = comment;
            }

            if (mark.ID == 0)
            {
                var id = contractLogic.CreateContractMark(mark);
                mark = contractLogic.GetContractMark(id);
            }
            else
            {
                contractLogic.UpdateContractMark(mark);
            }

            contractLogic.CreateContractMarksHistory(new ContractMarksHistory {
                ContractId = contractId, Date = DateTime.Now, Text = mark.IsContractRejected ? "Договор отклонен" : "Снята метка 'Договор отклонен'", Reason = comment, UserId = CurrentUserId
            });

            return(Content(JsonConvert.SerializeObject(mark)));
        }
コード例 #3
0
        public ContentResult GetContractMarks(int contractId)
        {
            var mark = contractLogic.GetContractMarkByContract(contractId);

            if (mark == null)
            {
                mark = new ContractMark {
                    ContractId = contractId
                }
            }
            ;

            return(Content(JsonConvert.SerializeObject(mark)));
        }
コード例 #4
0
ファイル: ContractLogic.cs プロジェクト: sergeysy/Novelco
 public void UpdateContractMark(ContractMark mark)
 {
     using (var db = new LogistoDb())
     {
         db.ContractMarks.Where(w => w.ID == mark.ID)
         .Set(s => s.ContractBlockedDate, mark.ContractBlockedDate)
         .Set(s => s.ContractCheckedDate, mark.ContractCheckedDate)
         .Set(s => s.ContractOkDate, mark.ContractOkDate)
         .Set(s => s.ContractRejectedComment, mark.ContractRejectedComment)
         .Set(s => s.ContractRejectedDate, mark.ContractRejectedDate)
         .Set(s => s.IsContractBlocked, mark.IsContractBlocked)
         .Set(s => s.IsContractChecked, mark.IsContractChecked)
         .Set(s => s.IsContractOk, mark.IsContractOk)
         .Set(s => s.IsContractRejected, mark.IsContractRejected)
         .Set(s => s.ContractBlockedUserId, mark.ContractBlockedUserId)
         .Set(s => s.ContractCheckedUserId, mark.ContractCheckedUserId)
         .Set(s => s.ContractOkUserId, mark.ContractOkUserId)
         .Set(s => s.ContractRejectedUserId, mark.ContractRejectedUserId)
         .Update();
     }
 }
コード例 #5
0
        public ContentResult ToggleContractBlocked(int contractId, string comment)
        {
            #region проверка прав участника

            var legalId      = contractLogic.GetContract(contractId).LegalId;
            var contractorId = legalLogic.GetLegal(legalId).ContractorId.Value;

            var workgroup = participantLogic.GetWorkgroupByContractor(contractorId).Where(w => w.UserId == CurrentUserId);
            if (workgroup.Count() == 0)
            {
                return(Content(JsonConvert.SerializeObject(new { Message = "Вы не являетесь участником этого контрагента" })));
            }

            if (!IsAllowed(workgroup, ParticipantRoles.BUH, ParticipantRoles.GM))
            {
                return(Content(JsonConvert.SerializeObject(new { Message = "У вас нет прав на этого контрагента" })));
            }

            #endregion

            var mark = contractLogic.GetContractMarkByContract(contractId);
            if (mark == null)
            {
                mark = new ContractMark {
                    ContractId = contractId
                }
            }
            ;

            if (mark.IsContractBlocked)
            {
                // проверка прав участника
                if (!participantLogic.IsAllowedActionByContractor(36, contractorId, CurrentUserId))
                {
                    return(Content(JsonConvert.SerializeObject(new { ActionId = 36, Message = "У вас недостаточно прав на выполнение этого действия." })));
                }

                mark.IsContractBlocked      = false;
                mark.ContractBlockedDate    = null;
                mark.ContractBlockedUserId  = null;
                mark.ContractBlockedComment = "";
            }
            else
            {
                // проверка прав участника
                if (!participantLogic.IsAllowedActionByContractor(35, contractorId, CurrentUserId))
                {
                    return(Content(JsonConvert.SerializeObject(new { ActionId = 35, Message = "У вас недостаточно прав на выполнение этого действия." })));
                }

                mark.IsContractBlocked      = true;
                mark.ContractBlockedDate    = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified);
                mark.ContractBlockedUserId  = CurrentUserId;
                mark.ContractBlockedComment = comment;
            }

            if (mark.ID == 0)
            {
                mark = contractLogic.GetContractMark(contractLogic.CreateContractMark(mark));
            }
            else
            {
                contractLogic.UpdateContractMark(mark);
            }

            contractLogic.CreateContractMarksHistory(new ContractMarksHistory {
                ContractId = contractId, Date = DateTime.Now, Text = mark.IsContractBlocked ? "Договор блокирован" : "Снята метка 'Договор блокирован'", Reason = comment, UserId = CurrentUserId
            });


            string info = "";
            #region если договор блокируется в тот момент, когда по нему есть текущие доходы или расходы (по заказам в статусе отличном от мотивация)

            var accs    = accountingLogic.GetAccountingsByContract(contractId);
            var numbers = new List <string>();
            foreach (var item in accs)
            {
                var order = orderLogic.GetOrder(item.OrderId);
                if (order.OrderStatusId != 7)
                {
                    numbers.Add(item.Number);
                }
            }

            var allNumbers = string.Join(", ", numbers.ToArray());
            if (!string.IsNullOrEmpty(allNumbers))
            {
                //return Content(JsonConvert.SerializeObject(new { ActionId = 35, Message = "На этот договор есть немотивированные заказы c доход/расходами: " + allNumbers }));
                info = "На этот договор есть немотивированные заказы c доход/расходами: " + allNumbers;
            }

            #endregion

            return(Content(JsonConvert.SerializeObject(new { Mark = mark, InfoMessage = info })));
        }