微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用来自另一个模型的交易价值更新联系人的总价值

如何解决如何使用来自另一个模型的交易价值更新联系人的总价值

我有两个带有这两个模型的 sql

我想为我的仪表板更新同一联系人的时间报告的同一联系人的供应商积分总和。如果仪表板上不存在联系人,我很想创建一个新记录。

请参阅我的两个课程附加的仪表板和时间表以及示例中的索引页。 但是我需要帮助如何编写它,因为我是新手。

// ===========================
// My class with total values
// ===========================
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace WorkCollaboration.Models
{
    public class ContactDashboard
    {
        [Key]
        [display(Name = "Contact Id"),required(ErrorMessage = "Contact Id required")]
        public int ContactId { get; set; }
        [display(Name = "Number of Customer Need Demands")]
        public decimal NumberofCusNeedDemands { get; set; }
        [display(Name = "Number of supplier Offerings")]
        public decimal NumberofTalentOfferings { get; set; }
        [display(Name = "Number of Customer Platin Badges")]
        public int NumberofCusBadgesPlatin{ get; set; }
        [display(Name = "Number of Customer Gold Badges")]
        public int NumberofCusBadgesGold{ get; set; }
        [display(Name = "Number of Customer Silver Badges")]
        public int NumberofCusBadgesSilver{ get; set; }
        [display(Name = "Number of Customer bronze Badges")]
        public int NumberofCusBadgesbronze{ get; set; }
        [display(Name = "Number of Customer Iron Badges")]
        public int NumberofCusBadgesIron{ get; set; }
        [display(Name = "Number of supplier Platin Badges")]
        public int NumberofSupBadgesPlatin{ get; set; }
        [display(Name = "Number of supplier Gold Badges")]
        public int NumberofSupBadgesGold{ get; set; }
        [display(Name = "Number of supplier Silver Badges")]
        public int NumberofSupBadgesSilver{ get; set; }
        [display(Name = "Number of supplier bronze Badges")]
        public int NumberofSupBadgesbronze{ get; set; }
        [display(Name = "Number of supplier Iron Badges")]
        public int NumberofSupBadgesIron{ get; set; }
        [display(Name = "Total Customer Points")]
        public decimal NumberofTotalCusPoints{ get; set; }
        [display(Name = "Total supplier Points")]
        public decimal NumberofTotalSupPoints{ get; set; }
        [display(Name = "Average Customer Recession")]
        public int AverageofCusRecessions{ get; set; }
        [display(Name = "Average supplier Recession")]
        public int AverageofSupRecessions{ get; set; }
    }
}

//========================================
//My class with transaction values
//========================================

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace WorkCollaboration.Models
{
    public class TimeReport
    {
        [Key]
        [display(Name = "Time Report Id"),required(ErrorMessage = "Time Report Id required")] 
        public int TimeReportId { get; set; }
        public int TimeReportCustomerNeedContactId { get; set; }
        [display(Name = "supplier Contact Id"),required(ErrorMessage = "supplier Contact Id 
        required")]
        public int TimeReportsupplierTalentContactId { get; set; }
        [display(Name = "Time Report Date"),required(ErrorMessage = "Time Report Date required")]
        public DateTime TimeReportDate { get; set; }
        [display(Name = "Time Report Hours"),required(ErrorMessage = "Time Report Hours required")]
        public decimal TimeReportHours { get; set; }
        [display(Name = "Time Report Text"),required(ErrorMessage = "Time Report Text required")]
        public string TimeReportText { get; set; }
        [display(Name = "Time Report State"),required(ErrorMessage = "Time Report State required")]
        public string TimeReportState { get; set; }
        [display(Name = "supplier Points Value")]
        public decimal TimeReportSupContactPointValue { get; set; }

    }
}

我在我的索引页中,希望始终更新以获取点值的总和

    [BindProperty]
    public TimeReport TimeReport { get; set; }
    public CustomerNeed CustomerNeed { get; set; }
    public supplierTalent supplierTalent { get; set; }
    public IList<Models.ContactDashboard> ContactDashboard { get;set; }
    
    public async Task OnGetAsync()
    {
            ContactDashboard = await _context.ContactDashboard.ToListAsync();

    // something like this 
    foreach field in TimeReport

    if (TimeReport.TimeReportsupplierTalentContactId = ContactDashboard.ContactId)
    {
        Update ContactDashboard Record
        ContactDashboard.NumberofTotalSupPoints = ContactDashboard.NumberofTotalSupPoints + 
        TimeReport.TimeReportSupContactPointValue
    }
    else 
    {
        Insert new Contact in ContactDashboard

        ContactDashboard.ContactId = TimeReport.TimeReportsupplierTalentContactId
        ContactDashboard.NumberofTotalSupPoints = ContactDashboard.NumberofTotalSupPoints + 
        TimeReport.TimeReportSupContactPointValue
    }
}

感谢您的帮助

2.3.2021 更新

我在问题上取得了进展,请参阅我的评论

对我的模型进行迭代也能正常工作。如果丢失,则创建记录并进行更新。

查看我的代码

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.EntityFrameworkCore;
using NToastNotify;
using WorkCollaboration.Data;
using WorkCollaboration.Models;

namespace WorkCollaboration.Pages.ContactDashboardOverview
{
    public class DashboardModel : PageModel
    {
        private readonly WorkCollaboration.Data.WorkCollaborationContext _context;
        private readonly IToastNotification toastNotification;
        public DashboardModel(WorkCollaboration.Data.WorkCollaborationContext context,IToastNotification toastNotification)
        {
            _context = context;
            this.toastNotification = toastNotification;
        }



        [BindProperty]
        public IList<Models.ContactDashboardOverview> ContactDashboardOverview { get;set; }
        public IList<Models.Contact> Contact { get;set; }
        public IList<Models.TimeReport> TimeReport { get;set; }
        public Models.ContactDashboard ContactDashboard { get; set; }

        bool success_state;

        private bool CreatednewDashboardContact(int Contactid)
        {
            ////============================================
            //// Adding new Dashboard Contact
            ////============================================
            var ContactDashboardAdd = new Models.ContactDashboard();
            ContactDashboardAdd.ContactId = Contactid;
            _context.ContactDashboard.Add(ContactDashboardAdd);
            _context.SaveChangesAsync();
            success_state = true;
            return success_state;
        }

        private bool UpdateExistingDashboardContact(int Contactid,decimal supplierPoints)
        {
            ////============================================
            //// Updateing Dashboard Contact
            ////============================================
            var ContactDashboardUpdate = new Models.ContactDashboard();
            ContactDashboardUpdate.ContactId = Contactid;
            ContactDashboardUpdate.NumberofTotalSupPoints = supplierPoints;


            _context.Attach(ContactDashboardUpdate).State = EntityState.Modified;

            try
            {
                _context.SaveChanges();
            }
            catch (dbupdateConcurrencyException)
            {
                if (!ContactDashboardExists(ContactDashboardUpdate.ContactId))
                {
                    success_state = false;
                    return success_state;
                }
                else
                {
                    throw;
                }
            }
            success_state = true;
            return success_state;
        }

        private bool ContactDashboardExists(int id)
        {
            return _context.ContactDashboard.Any(e => e.ContactId == id);
        }



        public async Task OnGetAsync()
        {
            string SessionKeyName = "_Name";
            string SessionKeyId = "_Id";
            string SessionKeyDate = "_Date";
            string SessionKeyLang = "_Lang";

            DateTime Now = DateTime.Now;
            string valueSystemKeyDates = Now.ToString("yyyymmddhh:mm:ss");

            var SessionIdDate = HttpContext.Session.GetString(SessionKeyDate);
            var SessionIdId = HttpContext.Session.GetString(SessionKeyId);
            var SessionIdName = HttpContext.Session.GetString(SessionKeyName);
            var SessionIdLang = HttpContext.Session.GetString(SessionKeyLang);

            if (SessionIdId == "" | SessionIdId == null)
            {
                // Info
                toastNotification.AddInfoToastMessage("Sie sind nicht eingelogged");
                toastNotification.AddInfoToastMessage("You are not logged in");
                toastNotification.AddInfoToastMessage("Vous n'êtes pas connecté");
                RedirectToPage("/logonService/LoginCreate");
            }
            
            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "DE")
            {
                var culture = CultureInfo.CreateSpecificCulture("de-CH");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("de-CH");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "EN")
            {
                var culture = CultureInfo.CreateSpecificCulture("en-US");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("en-US");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "FR")
            {
                var culture = CultureInfo.CreateSpecificCulture("fr-FR");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("fr-FR");
            }


            ContactDashboardOverview = await _context.ContactDashboardOverview.ToListAsync();
            Contact = await _context.Contact.ToListAsync();
            TimeReport = await _context.TimeReport.ToListAsync();


            foreach (var contactitem in Contact)
            {
                
                if (!ContactDashboardExists(contactitem.ContactId))
                {
                    // Create new
                    CreatednewDashboardContact(contactitem.ContactId);
                }
            }



            foreach (var contactitem in Contact)
            {
                foreach (var timereportitem in TimeReport)
                {
                    if (contactitem.ContactId == timereportitem.TimeReportsupplierTalentContactId)
                    {
                        foreach (var dashboarditem in ContactDashboardOverview)
                        {
                            if (contactitem.ContactId == dashboarditem.ContactId)
                            {
                            
                                // Update because it is found
                                dashboarditem.NumberofTotalSupPoints = dashboarditem.NumberofTotalSupPoints +
                                                                       timereportitem.TimeReportSupContactPointValue;
                                UpdateExistingDashboardContact(dashboarditem.ContactId,dashboarditem.NumberofTotalSupPoints);
                            }
                        }
                    }
                }
            }





            //Success
            if (SessionIdLang == "DE")
            {
                toastNotification.AddSuccesstoastMessage("Daten erfolgreich geladen");
            }
            if (SessionIdLang == "EN")
            {
                toastNotification.AddSuccesstoastMessage("Data loaded successfully");
            }
            if (SessionIdLang == "FR")
            {
                toastNotification.AddSuccesstoastMessage("Chargement des données réussi");
            }



        }
    }
}

但是,我在循环低谷时收到此错误。在调试器中,我并不总是但有时会得到它。这在创建和更新时

SQL Error

感谢帮助

解决方法

我有两个环触点接触。在循环内部,我正在更新我的仪表板。然后我有第二个循环更新下一个聚合值...

当我在第二个循环中尝试更新我的仪表板时,我收到有关实体实例已附加或无法跟踪的错误。

没有跟踪选项没有帮助,从异步切换到同步也没有帮助。从每个循环中放入新模型并没有帮助...

解决方案是将所有内容都放在一个循环中,现在它运行良好,就像我想要的那样。不幸的是,保持代码简单不再是真的。

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.EntityFrameworkCore;
using NToastNotify;
using WorkCollaboration.Data;
using WorkCollaboration.Models;

namespace WorkCollaboration.Pages.ContactDashboard
{
    public class CalcModel : PageModel
    {
        private readonly WorkCollaboration.Data.WorkCollaborationContext _context;
        private readonly IToastNotification toastNotification;

        public CalcModel(WorkCollaboration.Data.WorkCollaborationContext context,IToastNotification toastNotification)
        {
            _context = context;
            this.toastNotification = toastNotification;
        }

        [BindProperty] 
        public Models.ContactDashboard ContactDashboard { get; set; }
        public IList<Models.ContactDashboard> ContactDashboardList { get; set; }        
        public IList<Models.Contact> Contact { get; set; }
        public IList<Models.CustomerNeed> CustomerNeed {get; set; }
        public IList<Models.SupplierTalent> SupplierTalent { get; set; }
        public IList<Models.BadgesforCusContact> BadgesforCusContact { get; set; }
        public IList<Models.BadgesforSupContact> BadgesforSupContact { get; set; }
        public IList<Models.PointsforCusContact> PointsforCusContact { get; set; }
        public IList<Models.PointsforSupContact> PointsforSupContact { get; set; }
        public IList<Models.RatingfromSupContactToCusContact> RatingfromSupContactToCusContact { get; set; }
        public IList<Models.RatingfromCusContactToSupContact> RatingfromCusContactToSupContact { get; set; }
        public IList<Models.TimeReport> TimeReport { get; set; }

        public async Task<IActionResult> OnGetAsync()
        {
            string SessionKeyName = "_Name";
            string SessionKeyId = "_Id";
            string SessionKeyDate = "_Date";
            string SessionKeyLang = "_Lang";

            DateTime now = DateTime.Now;
            string valueSystemKeyDates = now.ToString("yyyymmddhh:mm:ss");

            var SessionIdDate = HttpContext.Session.GetString(SessionKeyDate);
            var SessionIdId = HttpContext.Session.GetString(SessionKeyId);
            var SessionIdName = HttpContext.Session.GetString(SessionKeyName);
            var SessionIdLang = HttpContext.Session.GetString(SessionKeyLang);

            if (SessionIdId == "" | SessionIdId == null)
            {
                // Info
                toastNotification.AddInfoToastMessage("Sie sind nicht eingelogged");
                toastNotification.AddInfoToastMessage("You are not logged in");
                toastNotification.AddInfoToastMessage("Vous n'êtes pas connecté");
                return RedirectToPage("/LogonService/LoginCreate");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "DE")
            {
                var culture = CultureInfo.CreateSpecificCulture("de-CH");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("de-CH");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "EN")
            {
                var culture = CultureInfo.CreateSpecificCulture("en-US");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("en-US");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "FR")
            {
                var culture = CultureInfo.CreateSpecificCulture("fr-FR");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("fr-FR");
            }

            //Success
            if (SessionIdLang == "DE")
            {
                toastNotification.AddSuccessToastMessage("Daten erfolgreich geladen");
            }

            if (SessionIdLang == "EN")
            {
                toastNotification.AddSuccessToastMessage("Data loaded successfully");
            }

            if (SessionIdLang == "FR")
            {
                toastNotification.AddSuccessToastMessage("Chargement des données réussi");
            }

            return Page();
        }


        // To protect from overposting attacks,enable the specific properties you want to bind to,for
        // more details,see https://aka.ms/RazorPagesCRUD.
        public async Task<IActionResult> OnPost()
        {

            _context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            string SessionKeyName = "_Name";
            string SessionKeyId = "_Id";
            string SessionKeyDate = "_Date";
            string SessionKeyLang = "_Lang";

            DateTime now = DateTime.Now;
            string valueSystemKeyDates = now.ToString("yyyymmddhh:mm:ss");

            var SessionIdDate = HttpContext.Session.GetString(SessionKeyDate);
            var SessionIdId = HttpContext.Session.GetString(SessionKeyId);
            var SessionIdName = HttpContext.Session.GetString(SessionKeyName);
            var SessionIdLang = HttpContext.Session.GetString(SessionKeyLang);

            if (SessionIdId == "" | SessionIdId == null)
            {
                // Info
                toastNotification.AddInfoToastMessage("Sie sind nicht eingelogged");
                toastNotification.AddInfoToastMessage("You are not logged in");
                toastNotification.AddInfoToastMessage("Vous n'êtes pas connecté");
                RedirectToPage("/LogonService/LoginCreate");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "DE")
            {
                var culture = CultureInfo.CreateSpecificCulture("de-CH");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("de-CH");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "EN")
            {
                var culture = CultureInfo.CreateSpecificCulture("en-US");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("en-US");
            }

            //=========================================
            // Change Culture on specific user language
            //=========================================
            if (SessionIdLang == "FR")
            {
                var culture = CultureInfo.CreateSpecificCulture("fr-FR");
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
                new CultureInfo("fr-FR");
            }

            Contact = await _context.Contact.AsNoTracking().ToListAsync();
            ContactDashboardList = await _context.ContactDashboard.AsNoTracking().ToListAsync();
            CustomerNeed = await _context.CustomerNeed.AsNoTracking().ToListAsync();
            SupplierTalent = await _context.SupplierTalent.AsNoTracking().ToListAsync();
            BadgesforCusContact = await _context.BadgesforCusContact.AsNoTracking().ToListAsync();
            BadgesforSupContact = await _context.BadgesforSupContact.AsNoTracking().ToListAsync();
            PointsforCusContact = await _context.PointsforCusContact.AsNoTracking().ToListAsync();
            PointsforSupContact = await _context.PointsforSupContact.AsNoTracking().ToListAsync();
            RatingfromSupContactToCusContact = await _context.RatingfromSupContactToCusContact.AsNoTracking().ToListAsync();
            RatingfromCusContactToSupContact = await _context.RatingfromCusContactToSupContact.AsNoTracking().ToListAsync();
            TimeReport = await _context.TimeReport.AsNoTracking().ToListAsync();

            //=================================================================
            // Adding new Dashboard Contact except 0 Contact Id (not logged In)
            //=================================================================
            _context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
            var ContactDashboard = new Models.ContactDashboard();
            
            // Make Loop over all contacts
            foreach (var contactitem in Contact)
            {
                // Create new dashboard contact if new contacts are created



                if (contactitem.ContactId != 0)
                { 

                    if (!ContactDashboardExists(contactitem.ContactId))
                    {
                        ContactDashboard.DashboardContactId = contactitem.ContactId;
                        _context.ContactDashboard.Add(ContactDashboard);
                        await _context.SaveChangesAsync();
                    }
                }
            }


            //=================================================================
            // Clear all values except 0 Contact Id (not logged In)
            //=================================================================

            // Make Loop over all contacts
            foreach (var contactitem in Contact)
            {
                if (contactitem.ContactId !=0)
                { 
                    ContactDashboard = await _context.ContactDashboard.FirstOrDefaultAsync(m => m.DashboardContactId == contactitem.ContactId);
                    ContactDashboard.DashboardContactId = contactitem.ContactId;

                    // Reset all values to zero (Basis for add-up calculation)
                    ContactDashboard.NumberofCusNeedDemands = 0;
                    ContactDashboard.NumberofTalentOfferings = 0;
                    ContactDashboard.NumberofCusBadgesPlatin = 0;
                    ContactDashboard.NumberofCusBadgesGold = 0;
                    ContactDashboard.NumberofCusBadgesSilver = 0;
                    ContactDashboard.NumberofCusBadgesBronze = 0;
                    ContactDashboard.NumberofCusBadgesIron = 0;
                    ContactDashboard.NumberofSupBadgesPlatin = 0;
                    ContactDashboard.NumberofSupBadgesGold = 0;
                    ContactDashboard.NumberofSupBadgesSilver = 0;
                    ContactDashboard.NumberofSupBadgesBronze = 0;
                    ContactDashboard.NumberofSupBadgesIron = 0;
                    ContactDashboard.NumberofTotalCusPoints = 0;
                    ContactDashboard.NumberofTotalSupPoints = 0;
                    ContactDashboard.NumberofCusRecessions = 0;
                    ContactDashboard.NumberofSupRecessions = 0;
                    ContactDashboard.ValueofCusRecessions = 0;
                    ContactDashboard.ValueofSupRecessions = 0;
                    ContactDashboard.NumberofCusHours = 0;
                    ContactDashboard.NumberofSupHours = 0;

                   // Make Loop over all Customer Needs records
                   var customerneeditems = CustomerNeed.Where(x => x.NeedContactId == contactitem.ContactId);

                    foreach (var customerneeditem in customerneeditems)
                    {
                        ContactDashboard.NumberofCusNeedDemands = ContactDashboard.NumberofCusNeedDemands + 1;
                        ContactDashboard.NumberofCusHours = ContactDashboard.NumberofCusHours + customerneeditem.NeedTimeExpectedHours;
                    }

                    // Make Loop over all supplier talents offers records
                    var suppliertanlenttitems = SupplierTalent.Where(x => x.TalentContactId == contactitem.ContactId);

                    foreach (var suppliertanlenttitem in suppliertanlenttitems)
                    {
                        ContactDashboard.NumberofTalentOfferings = ContactDashboard.NumberofTalentOfferings + 1;
                    }

                    // Make Loop over all Customer badges records
                    var badgesforcusitems = BadgesforCusContact.Where(x => x.BadgesCusContactId == contactitem.ContactId);

                    foreach (var badgesforcusitem in badgesforcusitems)
                    {
                        if (badgesforcusitem.BadgesLevel == "Platin")
                        {
                            ContactDashboard.NumberofCusBadgesPlatin = ContactDashboard.NumberofCusBadgesPlatin + 1;
                        }
                        if (badgesforcusitem.BadgesLevel == "Gold")
                        {
                            ContactDashboard.NumberofCusBadgesGold = ContactDashboard.NumberofCusBadgesGold + 1;
                        }
                        if (badgesforcusitem.BadgesLevel == "Silver")
                        {
                            ContactDashboard.NumberofCusBadgesSilver = ContactDashboard.NumberofCusBadgesSilver + 1;
                        }
                        if (badgesforcusitem.BadgesLevel == "Bronze")
                        {
                            ContactDashboard.NumberofCusBadgesBronze = ContactDashboard.NumberofCusBadgesBronze + 1;
                        }
                        if (badgesforcusitem.BadgesLevel == "Iron")
                        {
                            ContactDashboard.NumberofCusBadgesIron = ContactDashboard.NumberofCusBadgesIron + 1;
                        }
                    }

                    // Make Loop over all Supplier badges records
                    var badgesforsupitems = BadgesforSupContact.Where(x => x.BadgesSupContactId == contactitem.ContactId);

                    foreach (var badgesforsupitem in badgesforsupitems)
                    {
                        if (badgesforsupitem.BadgesLevel == "Platin")
                        {
                            ContactDashboard.NumberofSupBadgesPlatin = ContactDashboard.NumberofSupBadgesPlatin + 1;
                        }
                        if (badgesforsupitem.BadgesLevel == "Gold")
                        {
                            ContactDashboard.NumberofSupBadgesGold = ContactDashboard.NumberofSupBadgesGold + 1;
                        }
                        if (badgesforsupitem.BadgesLevel == "Silver")
                        {
                            ContactDashboard.NumberofSupBadgesSilver = ContactDashboard.NumberofSupBadgesSilver + 1;
                        }
                        if (badgesforsupitem.BadgesLevel == "Bronze")
                        {
                            ContactDashboard.NumberofSupBadgesBronze = ContactDashboard.NumberofSupBadgesBronze + 1;
                        }
                        if (badgesforsupitem.BadgesLevel == "Iron")
                        {
                            ContactDashboard.NumberofSupBadgesIron = ContactDashboard.NumberofSupBadgesIron + 1;
                        }
                    }

                    // Make Loop over all Customer Points records
                    var cuspointsitems = PointsforCusContact.Where(x => x.PointsCusContactId == contactitem.ContactId);

                    foreach (var cuspointsitem in cuspointsitems)
                    {
                        ContactDashboard.NumberofTotalCusPoints = ContactDashboard.NumberofTotalCusPoints + cuspointsitem.PointsTotal;
                    }

                    // Make Loop over all Supplier Points records
                    var suppointsitems = PointsforSupContact.Where(x => x.PointsSupContactId == contactitem.ContactId);

                    foreach (var suppointsitem in suppointsitems)
                    {
                        ContactDashboard.NumberofTotalSupPoints = ContactDashboard.NumberofTotalSupPoints + suppointsitem.PointsTotal;
                    }

                    // Make Loop over all Customer Recessions records
                    var cusrecessionstitems = RatingfromSupContactToCusContact.Where(x => x.RatingCusContactId == contactitem.ContactId);

                    foreach (var cusrecessionstitem in cusrecessionstitems)
                    {
                        ContactDashboard.NumberofCusRecessions = ContactDashboard.NumberofCusRecessions + 1;

                        ContactDashboard.ValueofCusRecessions = ContactDashboard.ValueofCusRecessions +
                                                                cusrecessionstitem.RatingValue;

                    }

                    // Make Loop over all Supplier Recessions records
                    var suprecessionstitems = RatingfromCusContactToSupContact.Where(x => x.RatingSupContactId == contactitem.ContactId);

                    foreach (var suprecessionstitem in suprecessionstitems)
                    {
                        ContactDashboard.NumberofSupRecessions = ContactDashboard.NumberofSupRecessions + 1;
                        ContactDashboard.ValueofSupRecessions = ContactDashboard.ValueofSupRecessions +
                                                                suprecessionstitem.RatingValue;

                    }

                    // Make Loop over all Timesheet records
                    var timesheettitems = TimeReport.Where(x => x.TimeReportSupplierTalentContactId == contactitem.ContactId);

                    foreach (var timesheettitem in timesheettitems)
                    {
                        ContactDashboard.NumberofSupHours = ContactDashboard.NumberofSupHours +
                                                            timesheettitem.TimeReportHours;

                    }

                    _context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
                    _context.Attach(ContactDashboard).State = EntityState.Modified;
                    await _context.SaveChangesAsync();
                }
            }

            //Success
            if (SessionIdLang == "DE")
            {
                toastNotification.AddSuccessToastMessage("Daten erfolgreich berechnet");
            }

            if (SessionIdLang == "EN")
            {
                toastNotification.AddSuccessToastMessage("Data add up successfully");
            }

            if (SessionIdLang == "FR")
            {
                toastNotification.AddSuccessToastMessage("Chargement des données réussi");
            }

            return RedirectToPage("/ContactDashboardOverview/Index");
        }

        private bool ContactDashboardExists(int id)
        {
            _context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
            return _context.ContactDashboard.Any(e => e.DashboardContactId == id);
        }
    }
}

希望这对与此错误作斗争的其他人有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。