コード例 #1
0
        public async Task <ResponseModel> Delete(ApproveStatusModel model)
        {
            ResponseModel response = new ResponseModel();

            try
            {
                ApproveStatus md = await _context.ApproveStatusRepository.FirstOrDefaultAsync(m => m.Id == model.Id);

                if (!md.RowVersion.SequenceEqual(model.RowVersion))
                {
                    response.ResponseStatus = Core.CommonModel.Enums.ResponseStatus.OutOfDateData;
                    return(response);
                }

                md.Deleted    = true;
                md.UpdateBy   = base.UserId;
                md.UpdateDate = DateTime.Now;

                _context.ApproveStatusRepository.Update(md);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(response);
        }
コード例 #2
0
        public async Task <ResponseModel> Item(int id)
        {
            ResponseModel response = new ResponseModel();

            try
            {
                ApproveStatus md = await _context.ApproveStatusRepository.FirstOrDefaultAsync(m => m.Id == id);

                ApproveStatusModel model = new ApproveStatusModel()
                {
                    Id         = md.Id,
                    Code       = md.Code,
                    Name       = md.Name,
                    Precedence = md.Precedence,
                    IsActive   = md.IsActive,
                    RowVersion = md.RowVersion,
                };

                response.Result = model;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(response);
        }
コード例 #3
0
        public async Task <ResponseModel> Insert(ApproveStatusModel model)
        {
            ResponseModel response = new ResponseModel();

            try
            {
                if (await _context.ApproveStatusRepository.CountAsync(m => m.Code == model.Code) > 0)
                {
                    response.ResponseStatus = Core.CommonModel.Enums.ResponseStatus.CodeExists;
                    return(response);
                }

                ApproveStatus md = new ApproveStatus();

                md.Code       = model.Code;
                md.Name       = model.Name;
                md.Precedence = model.Precedence;
                md.IsActive   = model.IsActive;
                md.CreateBy   = base.UserId;
                md.CreateDate = DateTime.Now;

                await _context.ApproveStatusRepository.AddAsync(md).ConfigureAwait(true);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(response);
        }
コード例 #4
0
    protected void repeatControl_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView drv = e.Item.DataItem as DataRowView;

        if (drv == null)
        {
            return;
        }

        string number = Cast.String(drv["OrderNumber"]);

        ApproveStatus approveResult  = Cast.Enum <ApproveStatus>(drv["ApproveResult"]);
        Label         lblApproveText = e.Item.FindControl("lblApproveResult") as Label;

        switch (approveResult)
        {
        case ApproveStatus.UnApprove:
            lblApproveText.Text = "";
            break;

        case ApproveStatus.Approve:
            lblApproveText.Text      = "ͨ¹ý";
            lblApproveText.ForeColor = System.Drawing.Color.Blue;
            break;

        case ApproveStatus.Reject:
            lblApproveText.Text      = "²µ»Ø";
            lblApproveText.ForeColor = System.Drawing.Color.Red;
            break;
        }
    }
コード例 #5
0
ファイル: RecordStatusIcon.cs プロジェクト: x1987624/SNS
        /// <summary>
        /// 输出兑换申请状态图标的方法
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="approveStatus">兑换申请状态</param>
        public static MvcHtmlString ApproveStatusIcon(this HtmlHelper htmlHelper, ApproveStatus approveStatus)
        {
            TagBuilder span = new TagBuilder("span");

            switch (approveStatus)
            {
            case ApproveStatus.Pending:
                span.MergeAttribute("class", "tn-icon-colorful tn-icon-colorful-question tn-icon-inline");
                span.MergeAttribute("title", "待处理");
                break;

            case ApproveStatus.Approved:
                span.MergeAttribute("class", "tn-icon-colorful tn-icon-colorful-pass tn-icon-inline");
                span.MergeAttribute("title", "已通过");
                break;

            case ApproveStatus.Rejected:
                span.MergeAttribute("class", "tn-icon tn-icon-exclamation tn-icon-inline");
                span.MergeAttribute("title", "已拒绝");
                break;

            default:
                span.MergeAttribute("class", "tn-icon-colorful tn-icon-colorful-pass tn-icon-inline");
                span.MergeAttribute("title", "待处理");
                break;
            }

            return(new MvcHtmlString(span.ToString()));
        }
コード例 #6
0
        private async Task ChangeApproveStatus(int reservationId, string userId, ApproveStatus status)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentException("Изберете потребител, чиято консултация ще променяте");
            }
            var reservationToEdit = unitOfWork.ReservationsRepository
                                    .Where(r => r.ReservationId == reservationId)
                                    .FirstOrDefault() ?? throw new ContentNotFoundException("Резервацията не е намерена");

            //only Client can cancel the reservation
            if (status == ApproveStatus.CanceledByClient)
            {
                if (reservationToEdit.ClientUserId != userId)
                {
                    throw new NotAuthorizedException("Нямате право да редактирате статусът на резервацията!");
                }
            }
            //Only team member can change to other statuses
            else if (!await userManager.IsInRoleAsync(userId, TeamUserRole))
            {
                throw new NotAuthorizedException("Нямате право да редактирате статусът на резервацията!");
            }

            reservationToEdit.ApproveStatus = status;

            unitOfWork.ReservationsRepository.Edit(reservationToEdit);
            unitOfWork.Save();
        }
コード例 #7
0
ファイル: POHeadImpl.cs プロジェクト: XtremeKevinChow/rdroad
 public static string ApproveStatusText(ApproveStatus statusValue)
 {
     switch (statusValue)
     {
         case ApproveStatus.Reject: return "�ܾ�";
         case ApproveStatus.UnApprove: return "δǩ��";
         case ApproveStatus.Approve: return "��ǩ��";
     }
     return "";
 }
コード例 #8
0
ファイル: POHeadImpl.cs プロジェクト: XtremeKevinChow/rdroad
        public static string ApproveStatusText(ApproveStatus statusValue)
        {
            switch (statusValue)
            {
            case ApproveStatus.Reject: return("拒绝");

            case ApproveStatus.UnApprove: return("未签核");

            case ApproveStatus.Approve: return("已签核");
            }
            return("");
        }
コード例 #9
0
        public static string StatusText(object status)
        {
            ApproveStatus statusValue = Magic.Framework.Utils.Cast.Enum <ApproveStatus>(status);

            switch (statusValue)
            {
            case ApproveStatus.Approve: return("已签核");

            case ApproveStatus.Reject: return("驳回");

            case ApproveStatus.UnApprove: return("未签核");
            }
            return("");
        }
コード例 #10
0
    protected void rptSDHead_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        System.Data.DataRowView drv = e.Item.DataItem as System.Data.DataRowView;
        if (drv == null)
        {
            return;
        }
        INVCheckStatus status = Cast.Enum <INVCheckStatus>(drv["Status"]);

        if (status != INVCheckStatus.New)
        {
            HtmlInputCheckBox chk = e.Item.FindControl("checkbox") as HtmlInputCheckBox;
            if (chk == null)
            {
                return;
            }
            chk.Visible = false;
        }
        HtmlAnchor cmd = e.Item.FindControl("cmdDetail") as HtmlAnchor;

        if (status == INVCheckStatus.New)
        {
            cmd.Visible = false;
        }
        else
        {
            cmd.HRef = "javascript:ondetail('" + Cast.String(drv["OrderNumber"]) + "');";
        }
        Label         lblApprStatus = e.Item.FindControl("lblApprStatus") as Label;
        ApproveStatus apprStatus    = Cast.Enum <ApproveStatus>(drv["ApproveResult"]);

        lblApprStatus.Text = ERPUtil.EnumText <ApproveStatus>(apprStatus);
        switch (apprStatus)
        {
        case ApproveStatus.UnApprove:
            lblApprStatus.Text = "";
            break;

        case ApproveStatus.Approve:
            lblApprStatus.ForeColor = System.Drawing.Color.Blue;
            break;

        case ApproveStatus.Reject:
            lblApprStatus.ForeColor = System.Drawing.Color.Red;
            break;
        }
    }
コード例 #11
0
    protected void repeatControl_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView drv = e.Item.DataItem as DataRowView;

        if (drv == null)
        {
            return;
        }

        string rcvNumber = Cast.String(drv["OrderNumber"]);

        ReceiveStatus     status = Cast.Enum <ReceiveStatus>(drv["Status"]);
        HtmlInputCheckBox chk    = e.Item.FindControl("checkbox") as HtmlInputCheckBox;

        //LinkButton cmdDelete = e.Item.FindControl("cmdDelete") as LinkButton;
        //cmdDelete.Attributes["ordNum"] = rcvNumber;
        if (status != ReceiveStatus.New)
        {
            chk.Visible = false;
        }

        ApproveStatus approveResult  = Cast.Enum <ApproveStatus>(drv["ApproveResult"]);
        Label         lblApproveText = e.Item.FindControl("lblApproveResult") as Label;

        switch (approveResult)
        {
        case ApproveStatus.UnApprove:
            lblApproveText.Text = "";
            break;

        case ApproveStatus.Approve:
            lblApproveText.Text      = "通过";
            lblApproveText.ForeColor = System.Drawing.Color.Blue;
            break;

        case ApproveStatus.Reject:
            lblApproveText.Text      = "驳回";
            lblApproveText.ForeColor = System.Drawing.Color.Red;
            break;
        }
    }
コード例 #12
0
    protected void repeatControl_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView drv = e.Item.DataItem as DataRowView;

        if (drv == null)
        {
            return;
        }

        string number = Cast.String(drv["OrderNumber"]);

        ReturnStatus      status = Cast.Enum <ReturnStatus>(drv["Status"]);
        HtmlInputCheckBox chk    = e.Item.FindControl("checkbox") as HtmlInputCheckBox;

        if (status != ReturnStatus.New || Cast.String(drv["OrderTypeCode"]).Trim() == ReturnHead.ORDER_TYPE_EXCHANGE_RTN)
        {
            chk.Visible = false;
        }

        ApproveStatus approveResult  = Cast.Enum <ApproveStatus>(drv["ApproveResult"]);
        Label         lblApproveText = e.Item.FindControl("lblApproveResult") as Label;

        switch (approveResult)
        {
        case ApproveStatus.UnApprove:
            lblApproveText.Text = "";
            break;

        case ApproveStatus.Approve:
            lblApproveText.Text      = "通过";
            lblApproveText.ForeColor = System.Drawing.Color.Blue;
            break;

        case ApproveStatus.Reject:
            lblApproveText.Text      = "驳回";
            lblApproveText.ForeColor = System.Drawing.Color.Red;
            break;
        }
    }
コード例 #13
0
    protected void rptSDHead_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        System.Data.DataRowView drv = e.Item.DataItem as System.Data.DataRowView;
        if (drv == null)
        {
            return;
        }
        INVCheckStatus status = Cast.Enum <INVCheckStatus>(drv["Status"]);

        if (status != INVCheckStatus.New)
        {
            HtmlInputCheckBox chk = e.Item.FindControl("checkbox") as HtmlInputCheckBox;
            if (chk != null)
            {
                chk.Visible = false;
            }
        }
        Label         lblApprStatus = e.Item.FindControl("lblApprStatus") as Label;
        ApproveStatus apprStatus    = Cast.Enum <ApproveStatus>(drv["ApproveResult"]);

        lblApprStatus.Text = ERPUtil.EnumText <ApproveStatus>(apprStatus);
        switch (apprStatus)
        {
        case ApproveStatus.UnApprove:
            lblApprStatus.Text = "";
            break;

        case ApproveStatus.Approve:
            lblApprStatus.ForeColor = System.Drawing.Color.Blue;
            break;

        case ApproveStatus.Reject:
            lblApprStatus.ForeColor = System.Drawing.Color.Red;
            break;
        }
    }
コード例 #14
0
        public async Task EntscheidFreigabeHinterlegen(string currentUserId, List <int> orderItemIds, ApproveStatus entscheid,
                                                       DateTime?datumBewilligung,
                                                       string interneBemerkung)
        {
            var orderList = await GetOrderItems(orderItemIds);

            await statusWechsler.Execute(oi => oi.EntscheidFreigabeHinterlegen(entscheid, datumBewilligung, interneBemerkung), orderList,
                                         GetUser(currentUserId), DateTime.Now);
        }
コード例 #15
0
 public virtual void EntscheidFreigabeHinterlegen(ApproveStatus entscheid, DateTime?datumBewilligung,
                                                  string interneBemerkung)
 {
     ThrowReadableInvalidOperation();
 }
コード例 #16
0
 public static bool VerlangtMitteilungBestellungMitTeilbewilligung(this ApproveStatus approveStatus)
 {
     return(approveStatus == ApproveStatus.ZurueckgewiesenTeilbewilligungVorhanden);
 }
コード例 #17
0
 public static bool VerlangtDatumsangabe(this ApproveStatus status)
 {
     return(status == ApproveStatus.FreigegebenInSchutzfrist);
 }
コード例 #18
0
 public static bool IstFreigegeben(this ApproveStatus status)
 {
     return(status > 0 && (int)status < 100);
 }
コード例 #19
0
        public override void EntscheidFreigabeHinterlegen(ApproveStatus entscheid, DateTime?datumBewilligung, string interneBemerkung)
        {
            Context.ThrowIfAuftragstypIsNot(new[]
            {
                OrderType.Verwaltungsausleihe,
                OrderType.Lesesaalausleihen,
                OrderType.Digitalisierungsauftrag
            });

            if (entscheid == ApproveStatus.NichtGeprueft)
            {
                throw new BadRequestException("Die Funktion EntscheidFreigabeHinterlegen verlangt, dass ein Entscheid getroffen wird.");
            }

            if (entscheid == ApproveStatus.FreigegebenDurchSystem)
            {
                throw new BadRequestException(
                          $"Die Funktion EntscheidFreigabeHinterlegen kann nicht mit {nameof(ApproveStatus)} = {ApproveStatus.FreigegebenDurchSystem} aufgerufen werden.");
            }

            if (entscheid.VerlangtDatumsangabe() && !datumBewilligung.HasValue)
            {
                throw new BadRequestException(
                          $"Der Entscheid {entscheid.ToString()} verlangt die Angabe eines Datums. Es wurde aber kein Datum angegeben.");
            }

            if (!entscheid.VerlangtDatumsangabe() && datumBewilligung.HasValue)
            {
                throw new BadRequestException(
                          $"Der Entscheid {entscheid.ToString()} erlaubt nicht die Angabe eines Datums. Es wurde aber ein Datum angegeben.");
            }


            Context.SetApproveStatus(entscheid, Context.CurrentUser);
            Context.OrderItem.BewilligungsDatum = datumBewilligung;
            Context.OrderItem.InternalComment   = interneBemerkung; // überschreiben, nicht anhängen

            if (entscheid.IstFreigegeben())
            {
                if (VeLiegtDigitalVor(Context.OrderItem.VeId))
                {
                    this.AbschliessenInternal();
                }
                else
                {
                    switch (Context.Ordering.Type)
                    {
                    case OrderType.Digitalisierungsauftrag:
                        Context.SetNewStatus(AuftragStatusRepo.FuerDigitalisierungBereit);
                        break;

                    case OrderType.Verwaltungsausleihe:
                    case OrderType.Lesesaalausleihen:
                        Context.SetNewStatus(AuftragStatusRepo.FuerAushebungBereit);
                        break;
                    }
                }
            }
            else
            {
                Context.OrderItem.Abbruchgrund = Enum.TryParse(entscheid.ToString(), true, out Abbruchgrund abbruchgrund)
                    ? abbruchgrund
                    : Abbruchgrund.NichtGesetzt;
                Context.OrderItem.Abschlussdatum = Context.TransactionTimeStamp;
                Context.SetNewStatus(AuftragStatusRepo.Abgebrochen);
            }

            // Falls es der letzte Auftrag einer Bestellung war
            if (Context.Ordering.Items.All(item => item.Status != OrderStatesInternal.FreigabePruefen))
            {
                PrepareMailFreigabeKomplett();
                PrepareMailMitteilungBestellungMitTeilbewilligung();
            }

            if (Context.OrderItem.VeId.HasValue)
            {
                UpdateIndivTokensHelper.RegisterActionForIndivTokensRefresh(this);
            }
        }
コード例 #20
0
        private static void DoApprove(ISession session, int appId, ApproveStatus status, string appNote)
        {
            if (_approvingItems.Contains(appId))
            {
                throw new Exception("该单据正在处理签核结果,请不要重复提交");
            }
            lock (_lockObj)
            {
                if (_approvingItems.Contains(appId))
                {
                    throw new Exception("该单据正在处理签核结果,请不要重复提交");
                }
                _approvingItems.Add(appId);

                try
                {
                    IApprovable        appOrder = null;
                    OrderApproveResult ar       = OrderApproveResult.Retrieve(session, appId);
                    if (ar == null)
                    {
                        throw new Exception("Invalidate approve result " + appId.ToString());
                    }
                    OrderApproveItem ai = OrderApproveItem.Retrieve(session, ar.ApproveID);
                    if (ai == null)
                    {
                        throw new Exception(string.Format("Invalidate approve item {0}", ar.ApproveID));
                    }
                    if (ar.HasFinished)
                    {
                        throw new Exception(string.Format("该单据已经签核完成,请不要重复提交 {0}", ar.ApproveID));
                    }

                    ar.ActiveItem    = false;
                    ar.HasFinished   = true;
                    ar.ApproveResult = status == ApproveStatus.Approve;
                    ar.ApproveTime   = DateTime.Now;
                    ar.ApproveNote   = appNote;
                    ar.Update(session, "ActiveItem", "HasFinished", "ApproveResult", "ApproveTime", "ApproveNote");

                    #region 驳回处理
                    if (status == ApproveStatus.Reject)
                    {
                        appOrder = ERPUtil.GetApproveItem(session, ai.OrderTypeCode, ai.OrderNumber);
                        if (appOrder == null)
                        {
                            throw new Exception(string.Format("Approve item for {{{0}, {1}}} not found", ai.OrderTypeCode, ai.OrderNumber));
                        }

                        //删除掉后面还没有签核的记录
                        session.CreateEntityQuery <OrderApproveResult>()
                        .Where(Exp.Eq("ApproveID", ai.ApproveID))
                        .And(Exp.Eq("HasFinished", false))
                        .Delete();
                        //更新签核主记录状态
                        ai.Status      = ApproveStatus.Reject;
                        ai.ApproveTime = DateTime.Now;
                        ai.Update(session, "Status", "ApproveTime");
                        //单据的签核状态
                        appOrder.ApproveResult = ApproveStatus.Reject;
                        appOrder.ApproveTime   = DateTime.Now;
                        appOrder.ApproveUser   = ar.ApproveUser;
                        appOrder.ApproveNote   = appNote;
                        appOrder.Update(session, "ApproveResult", "ApproveTime", "ApproveUser", "ApproveNote");
                        //执行回调方法
                        appOrder.OnApprove(session);
                        return;
                    }
                    #endregion

                    #region 签核通过处理
                    IList <OrderApproveResult> unfinished = session.CreateEntityQuery <OrderApproveResult>()
                                                            .Where(Exp.Eq("ApproveID", ar.ApproveID))
                                                            .And(Exp.Eq("HasFinished", false))
                                                            .OrderBy("ApproveResultID")
                                                            .SetLastOffset(1)
                                                            .List <OrderApproveResult>();
                    OrderApproveResult next = null;
                    if (unfinished != null && unfinished.Count > 0)
                    {
                        next = unfinished[0];
                    }

                    if (next != null)
                    {
                        //单据签核过程还没有结束
                        next.ActiveItem = true;
                        next.Update(session, "ActiveItem");
                    }
                    else
                    {
                        //单据已经完成签核
                        appOrder = ERPUtil.GetApproveItem(session, ai.OrderTypeCode, ai.OrderNumber);
                        if (appOrder == null)
                        {
                            throw new Exception(string.Format("Approve item for {{{0}, {1}}} not found", ai.OrderTypeCode, ai.OrderNumber));
                        }

                        //更新签核主记录状态
                        ai.Status      = ApproveStatus.Approve;
                        ai.ApproveTime = DateTime.Now;
                        ai.Update(session, "Status", "ApproveTime");
                        //被签核单据的状态
                        appOrder.ApproveResult = ApproveStatus.Approve;
                        appOrder.ApproveTime   = DateTime.Now;
                        appOrder.ApproveUser   = ar.ApproveUser;
                        appOrder.ApproveNote   = appNote;
                        appOrder.Update(session, "ApproveResult", "ApproveTime", "ApproveUser", "ApproveNote");
                        //执行回调方法
                        appOrder.OnApprove(session);
                        session.PostCommit += appOrder.PostApprove;
                    }
                    #endregion
                }
                catch
                {
                    throw;
                }
                finally
                {
                    _approvingItems.Remove(appId);
                }
            }
        }
コード例 #21
0
    protected void repeatControl_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView drv = e.Item.DataItem as DataRowView;

        if (drv == null)
        {
            return;
        }
        //签核、驳回按钮
        ImageButton cmd;

        if (this.rdoUnapprove.Checked)
        {
            HtmlInputCheckBox chk = e.Item.FindControl("checkbox") as HtmlInputCheckBox;
            chk.Visible = true;
            cmd         = e.Item.FindControl("cmdPass") as ImageButton;
            cmd.Visible = true;
            cmd.Attributes["onclick"] = "noteForm(1, " + Cast.Int(drv["ApproveResultID"]).ToString() + ");return false;";
            cmd         = e.Item.FindControl("cmdReject") as ImageButton;
            cmd.Visible = true;
            cmd.Attributes["onclick"] = "noteForm(2, " + Cast.Int(drv["ApproveResultID"]).ToString() + ");return false;";
        }
        else
        {
            HtmlInputCheckBox chk = e.Item.FindControl("checkbox") as HtmlInputCheckBox;
            chk.Visible = false;
            cmd         = e.Item.FindControl("cmdPass") as ImageButton;
            cmd.Visible = false;
            cmd         = e.Item.FindControl("cmdReject") as ImageButton;
            cmd.Visible = false;
        }
        //查看单据详细信息
        HtmlAnchor cmdView = e.Item.FindControl("cmdView") as HtmlAnchor;
        string     viewUrl = Cast.String(drv["ViewURL"], "").Trim();

        if (viewUrl.Length <= 0)
        {
            cmdView.HRef = "javascript:alert('该类型的单据没有设置查看页面,请和管理员联系');";
        }
        else
        {
            string ot  = Cast.String(drv["OrderTypeCode"]).Trim();
            string url = WebUtil.AppendParam(viewUrl, "ordNum", Cast.String(drv["OrderNumber"]));
            if (ot == StockInHead.ORD_TYPE_PRD_IN || ot == StockInHead.ORD_TYPE_PRD_OUT)
            {
                url = WebUtil.AppendParam(url, "m", "sp");
            }
            cmdView.HRef = "javascript:viewOrder('" + url + "');";
        }
        //查看签核历史记录
        cmd = e.Item.FindControl("cmdNote") as ImageButton;
        if (cmd != null)
        {
            cmd.Attributes.Add("ordNum", Cast.String(drv["OrderNumber"]));
            cmd.Attributes.Add("onclick", "showTips(this);");
        }
        //状态文本
        ApproveStatus status = Cast.Enum <ApproveStatus>(drv["Status"]);
        Label         lbl    = e.Item.FindControl("lblStatus") as Label;

        switch (status)
        {
        case ApproveStatus.Approve:
            lbl.Text      = "通过";
            lbl.ForeColor = System.Drawing.Color.Blue;
            break;

        case ApproveStatus.UnApprove:
            lbl.Text      = "签核中";
            lbl.ForeColor = System.Drawing.Color.Red;
            break;

        case ApproveStatus.Reject:
            lbl.Text      = "驳回";
            lbl.ForeColor = System.Drawing.Color.DarkGray;
            break;
        }
    }
コード例 #22
0
        public async Task EntscheidFreigabeHinterlegen(string currentUserId, List <int> orderItemIds, ApproveStatus entscheid,
                                                       DateTime?datumBewilligung, string interneBemerkung)
        {
            var client =
                GetRequestClient <EntscheidFreigabeHinterlegenRequest>(BusConstants
                                                                       .EntscheidFreigabeHinterlegenRequestQueue);
            var entscheidFreigabeHinterlegenRequest = new EntscheidFreigabeHinterlegenRequest
            {
                UserId           = currentUserId,
                OrderItemIds     = orderItemIds,
                DatumBewilligung = datumBewilligung,
                Entscheid        = entscheid,
                InterneBemerkung = interneBemerkung
            };

            await client.GetResponse <EntscheidFreigabeHinterlegenResponse>(entscheidFreigabeHinterlegenRequest);
        }
コード例 #23
0
        private static void DoApprove(ISession session, int appId, ApproveStatus status, string appNote)
        {
            if (_approvingItems.Contains(appId))
                throw new Exception("�õ������ڴ���ǩ�˽�����벻Ҫ�ظ��ύ");
            lock (_lockObj)
            {
                if (_approvingItems.Contains(appId))
                    throw new Exception("�õ������ڴ���ǩ�˽�����벻Ҫ�ظ��ύ");
                _approvingItems.Add(appId);

                try
                {
                    IApprovable appOrder = null;
                    OrderApproveResult ar = OrderApproveResult.Retrieve(session, appId);
                    if (ar == null)
                        throw new Exception("Invalidate approve result " + appId.ToString());
                    OrderApproveItem ai = OrderApproveItem.Retrieve(session, ar.ApproveID);
                    if (ai == null)
                        throw new Exception(string.Format("Invalidate approve item {0}", ar.ApproveID));
                    if (ar.HasFinished)
                        throw new Exception(string.Format("�õ����Ѿ�ǩ����ɣ��벻Ҫ�ظ��ύ {0}", ar.ApproveID));

                    ar.ActiveItem = false;
                    ar.HasFinished = true;
                    ar.ApproveResult = status == ApproveStatus.Approve;
                    ar.ApproveTime = DateTime.Now;
                    ar.ApproveNote = appNote;
                    ar.Update(session, "ActiveItem", "HasFinished", "ApproveResult", "ApproveTime", "ApproveNote");

                    #region ���ش���
                    if (status == ApproveStatus.Reject)
                    {
                        appOrder = ERPUtil.GetApproveItem(session, ai.OrderTypeCode, ai.OrderNumber);
                        if (appOrder == null)
                            throw new Exception(string.Format("Approve item for {{{0}, {1}}} not found", ai.OrderTypeCode, ai.OrderNumber));

                        //ɾ������滹û��ǩ�˵ļ�¼
                        session.CreateEntityQuery<OrderApproveResult>()
                            .Where(Exp.Eq("ApproveID", ai.ApproveID))
                            .And(Exp.Eq("HasFinished", false))
                            .Delete();
                        //����ǩ������¼״̬
                        ai.Status = ApproveStatus.Reject;
                        ai.ApproveTime = DateTime.Now;
                        ai.Update(session, "Status", "ApproveTime");
                        //���ݵ�ǩ��״̬
                        appOrder.ApproveResult = ApproveStatus.Reject;
                        appOrder.ApproveTime = DateTime.Now;
                        appOrder.ApproveUser = ar.ApproveUser;
                        appOrder.ApproveNote = appNote;
                        appOrder.Update(session, "ApproveResult", "ApproveTime", "ApproveUser", "ApproveNote");
                        //ִ�лص�����
                        appOrder.OnApprove(session);
                        return;
                    }
                    #endregion

                    #region ǩ��ͨ������
                    IList<OrderApproveResult> unfinished = session.CreateEntityQuery<OrderApproveResult>()
                        .Where(Exp.Eq("ApproveID", ar.ApproveID))
                        .And(Exp.Eq("HasFinished", false))
                        .OrderBy("ApproveResultID")
                        .SetLastOffset(1)
                        .List<OrderApproveResult>();
                    OrderApproveResult next = null;
                    if (unfinished != null && unfinished.Count > 0)
                        next = unfinished[0];

                    if (next != null)
                    {
                        //����ǩ�˹��̻�û�н���
                        next.ActiveItem = true;
                        next.Update(session, "ActiveItem");
                    }
                    else
                    {
                        //�����Ѿ����ǩ��
                        appOrder = ERPUtil.GetApproveItem(session, ai.OrderTypeCode, ai.OrderNumber);
                        if (appOrder == null)
                            throw new Exception(string.Format("Approve item for {{{0}, {1}}} not found", ai.OrderTypeCode, ai.OrderNumber));

                        //����ǩ������¼״̬
                        ai.Status = ApproveStatus.Approve;
                        ai.ApproveTime = DateTime.Now;
                        ai.Update(session, "Status", "ApproveTime");
                        //��ǩ�˵��ݵ�״̬
                        appOrder.ApproveResult = ApproveStatus.Approve;
                        appOrder.ApproveTime = DateTime.Now;
                        appOrder.ApproveUser = ar.ApproveUser;
                        appOrder.ApproveNote = appNote;
                        appOrder.Update(session, "ApproveResult", "ApproveTime", "ApproveUser", "ApproveNote");
                        //ִ�лص�����
                        appOrder.OnApprove(session);
                        session.PostCommit += appOrder.PostApprove;
                    }
                    #endregion
                }
                catch
                {
                    throw;
                }
                finally
                {
                    _approvingItems.Remove(appId);
                }
            }
        }
コード例 #24
0
        //  [Authorize(Policy = "OnlySiteAdmin")]

        public async Task <ActionResult <ReservationDto> > SetReservationApprove(long id, ApproveStatus approve)
        {
            var reservationModel = await _context.ReservationModels.FindAsync(id);


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

            reservationModel.Approved = approve;
            await _context.SaveChangesAsync();

            return(_mapper.Map <ReservationDto>(reservationModel));
        }