예제 #1
0
        /// <summary>
        /// Gets a total count of Items matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmTransporterId", csm.TransporterId) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(cl.Id) AS [Total]
                             FROM
                                [dbo].[ClientLoad] cl
                                LEFT OUTER JOIN [dbo].[ClientAuthorisation] ca ON cl.[Id]=ca.[ClientLoadId]
                                LEFT OUTER JOIN [dbo].[User] u ON u.[Id]=ca.[UserId]
                                LEFT OUTER JOIN [dbo].[Vehicle] v ON v.[Id]=cl.[VehicleId]
                                LEFT OUTER JOIN [dbo].[Transporter] t ON t.[Id]=cl.[TransporterId]

                                LEFT OUTER JOIN [dbo].[ClientSite] cs1 ON cs1.[Id]=cl.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s1 ON s1.[Id]=cs1.[SiteId]

                                LEFT OUTER JOIN [dbo].[ClientSite] cs2 ON cs2.[Id]=cl.[ToClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s2 ON s2.[Id]=cs2.[SiteId]

                                LEFT OUTER JOIN [dbo].[Client] c ON c.[Id]=cl.[ClientId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=cl.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.SiteId > 0)
            {
                query = $"{query} AND (s1.Id=@csmSiteId)";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.Id=@csmClientId)";
            }
            if (csm.VehicleId > 0)
            {
                query = $"{query} AND (v.Id=@csmVehicleId)";
            }
            if (csm.TransporterId > 0)
            {
                query = $"{query} AND (t.Id=@csmTransporterId)";
            }
            if (csm.HasAuthorisationCode)
            {
                query = $"{query} AND (ca.Id IS NOT NULL)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (ca.[AuthorisationDate] >= @csmFromDate AND ca.[AuthorisationDate] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (ca.[AuthorisationDate]>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (ca.[AuthorisationDate]<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (cl.[LoadNumber] LIKE '%{1}%' OR
                                                  cl.[AccountNumber] LIKE '%{1}%' OR
                                                  cl.[ClientDescription] LIKE '%{1}%' OR
                                                  cl.[DeliveryNote] LIKE '%{1}%' OR
                                                  cl.[ReferenceNumber] LIKE '%{1}%' OR
                                                  cl.[ReceiverNumber] LIKE '%{1}%' OR
                                                  cl.[Equipment] LIKE '%{1}%' OR
                                                  cl.[PODNumber] LIKE '%{1}%' OR
                                                  cl.[PCNNumber] LIKE '%{1}%' OR
                                                  cl.[PRNNumber] LIKE '%{1}%' OR
                                                  cl.[THAN] LIKE '%{1}%' OR
                                                  cl.[ChepCompensationNo] LIKE '%{1}%' OR
                                                  ca.[Code] LIKE '%{1}%' OR
                                                  s1.[Name] LIKE '%{1}%' OR
                                                  s1.[Description] LIKE '%{1}%' OR
                                                  s2.[Name] LIKE '%{1}%' OR
                                                  s2.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  t.[Name] LIKE '%{1}%' OR
                                                  v.[Registration] LIKE '%{1}%' OR
                                                  u.[Name] LIKE '%{1}%' OR
                                                  u.[Surname] LIKE '%{1}%' OR
                                                  u.[Email] LIKE '%{1}%' OR
                                                  u.[Cell] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
        /// <summary>
        /// Gets a list of clients
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public Dictionary <int, string> List(bool v, PagingModel pm, CustomSearchModel csm)
        {
            Dictionary <int, string>      clientOptions = new Dictionary <int, string>();
            List <IntStringKeyValueModel> model         = new List <IntStringKeyValueModel>();

            if (csm.ClientId <= 0 && SelectedClient != null)
            {
                csm.ClientId = SelectedClient.Id;
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("clientid", csm.ClientId) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
            };

            #endregion

            string query = $"SELECT cs.[Id] AS [TKey], s.[Description] AS [TValue] FROM [dbo].[Site] s LEFT OUTER JOIN [dbo].[ClientSite] cs ON cs.[Id]=(SELECT TOP 1 cs1.[Id] FROM [dbo].[ClientSite] cs1 WHERE cs1.[SiteId]=s.[Id]) WHERE (cs.Id IS NOT NULL)";

            if (csm.ClientId > 0)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientCustomer] cc WHERE cs.ClientCustomerId=cc.Id AND cc.ClientId=@clientid)";
            }

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (s.[Name] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  s.[AccountCode] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE
            if (pm.Take != ConfigSettings.PagingTake)
            {
                query = $"{query} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY;";
            }

            model = context.Database.SqlQuery <IntStringKeyValueModel>(query.Trim(), parameters.ToArray()).ToList();

            if (model != null && model.Any())
            {
                foreach (var k in model)
                {
                    if (clientOptions.Keys.Any(x => x == k.TKey))
                    {
                        continue;
                    }

                    clientOptions.Add(k.TKey, (k.TValue ?? "").Trim());
                }
            }

            return(clientOptions);
        }
        /// <summary>
        /// Gets the total number of Chep Audits matching the specified params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
	                            COUNT(ca.[Id]) AS [Total]
                             FROM
	                            [dbo].[ChepAudit] ca
                                INNER JOIN [dbo].[Site] s ON s.[Id]=ca.[SiteId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show Disputes for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[Region] r WHERE (r.[Id]=s.[RegionId]) AND (pu.UserId=@userid) AND (r.[PSPId]=pu.[PSPId])) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE (cu.UserId=@userid) AND (EXISTS(SELECT 1 FROM [dbo].[ClientSite] cs WHERE cs.[SiteId]=s.[Id]))) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.SiteId != 0)
            {
                query = $"{query} AND (ca.SiteId=@csmSiteId) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (ca.CreatedOn >= @csmFromDate AND ca.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (ca.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (ca.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (s.[Name] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  ca.[Equipment] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #4
0
        /// <summary>
        /// Gets a total count of Client Products matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmProductId", csm.ProductId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(cp.Id)
                             FROM
                                [dbo].[ClientProduct] cp
                                INNER JOIN [dbo].[Product] p ON p.Id = cp.ProductId
                                INNER JOIN [dbo].[Client] c ON c.Id = cp.ClientId";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show clients for logged in PSP
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $@"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu INNER JOIN [dbo].[PSPClient] pc ON pc.PSPId=pu.PSPId WHERE pc.ClientId=c.Id AND pu.UserId=@userid ) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.UserId=@userid AND cu.ClientId=c.Id)";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.ClientId > 0)
            {
                query = $"{query} AND cp.ClientId=@csmClientId ";
            }
            if (csm.ProductId > 0)
            {
                query = $"{query} AND cp.ProductId=@csmProductId ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (cp.CreatedOn >= @csmFromDate AND cp.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (cp.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (cp.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (cp.[AccountingCode] LIKE '%{1}%' OR
                                                  cp.[ProductDescription] LIKE '%{1}%' OR
                                                  p.[Name] LIKE '%{1}%' OR
                                                  p.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #5
0
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = string.Format(@"SELECT
	                                         COUNT(v.Id) AS [Total]
                                           FROM
	                                         [dbo].[Vehicle] v"    );

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (v.CreatedOn >= @csmFromDate AND v.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (v.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (v.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                //query = string.Format( @"{0} AND (cp.DRReference LIKE '%{1}%' OR
                //                                  cp.Description LIKE '%{1}%' OR
                //                                  cp.PaymentReference LIKE '%{1}%' OR
                //                                  m.Name LIKE '%{1}%' OR
                //                                  m.Surname LIKE '%{1}%' OR
                //                                  r.Name LIKE '%{1}%' OR
                //                                  r.Region LIKE '%{1}%' OR
                //                                  m.MembershipNo LIKE '%{1}%' OR
                //                                  m.EmailAddress LIKE '%{1}%' OR
                //                                  m.Identification LIKE '%{1}%'
                //                             ) ", query, csm.Query.Trim() );
            }

            #endregion

            CountModel c = context.Database.SqlQuery <CountModel>(query.Trim(), parameters.ToArray()).FirstOrDefault();

            return(c.Total);
        }
        /// <summary>
        /// Gets a list of users using the provided filters
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <UserCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("csmRoleType", ( int )csm.RoleType) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                u.*,
                                (SELECT TOP 1 ur.RoleId FROM [dbo].[UserRole] ur WHERE u.Id=ur.UserId) AS [RoleId],
                                (SELECT TOP 1 r.Name FROM [dbo].[UserRole] ur, [dbo].[Role] r WHERE u.Id=ur.UserId AND r.Id=ur.RoleId) AS [RoleName]
                             FROM
                                [dbo].[User] u";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu WHERE u.Id=pu.UserId AND pu.PSPId IN({string.Join( ",", CurrentUser.PSPs.Select( s => s.Id ) )})) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE u.Id=cu.UserId AND cu.ClientId IN({string.Join( ",", CurrentUser.Clients.Select( s => s.Id ) )})) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.Status != Status.All)
            {
                query = $"{query} AND (u.Status=@csmStatus) ";
            }
            if (csm.RoleType != RoleType.All)
            {
                query = $"{query} AND (u.Type=@csmRoleType) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (u.CreatedOn >= @csmFromDate AND u.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (u.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (u.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (u.[Name] LIKE '%{1}%' OR
                                                  u.[Surname] LIKE '%{1}%' OR
                                                  u.[Email] LIKE '%{1}%' OR
                                                  u.[Cell] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <UserCustomModel>(query, parameters.ToArray()).ToList());
        }
예제 #7
0
        /// <summary>
        /// Gets a list of Delivery Notes matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <DeliveryNoteCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
	                            d.*,
	                            s.[Description] AS [SiteName],
	                            c.[CompanyName] AS [ClientName],
	                            (SELECT SUM(dnl.Returned) FROM [dbo].[DeliveryNoteLine] dnl WHERE dnl.[DeliveryNoteId]=d.[Id]) AS [ReturnedCountCount],
	                            (SELECT SUM(dnl.Delivered) FROM [dbo].[DeliveryNoteLine] dnl WHERE dnl.[DeliveryNoteId]=d.[Id]) AS [DeliveredCountCount],
	                            (SELECT SUM(dnl.OrderQuantity) FROM [dbo].[DeliveryNoteLine] dnl WHERE dnl.[DeliveryNoteId]=d.[Id]) AS [OrderedCountCount]
                             FROM
	                            [dbo].[DeliveryNote] d
                                INNER JOIN [dbo].[Client] c ON c.[Id]=d.[ClientId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs ON cs.[Id]=d.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s ON s.[Id]=cs.[SiteId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show Disputes for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $@"{query} AND EXISTS(SELECT
                                                1
                                              FROM
                                                [dbo].[PSPUser] pu
                                              WHERE
                                                (pu.UserId=@userid) AND
                                                EXISTS(SELECT 1 FROM [dbo].[PSPClient] pc WHERE pc.[PSPId]=pu.[PSPId] AND pc.[ClientId]=c.[Id])
                                             ) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $@"{query} AND EXISTS(SELECT
                                                1
                                              FROM
                                                [dbo].[ClientUser] cu 
                                              WHERE
                                                (cu.UserId=@userid) AND
                                                (cu.ClientId=c.Id)
                                             ) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.ClientId != 0)
            {
                query = $"{query} AND (d.[ClientId]=@csmClientId) ";
            }
            if (csm.SiteId != 0)
            {
                query = $"{query} AND (s.Id=@csmSiteId) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (d.CreatedOn >= @csmFromDate AND d.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (d.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (d.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (d.[CustomerName] LIKE '%{1}%' OR
                                                  d.[CustomerAddress] LIKE '%{1}%' OR
                                                  d.[InvoiceNumber] LIKE '%{1}%' OR
                                                  d.[OrderNumber] LIKE '%{1}%' OR
                                                  d.[Reference306] LIKE '%{1}%' OR
                                                  d.[EmailAddress] LIKE '%{1}%' OR
                                                  d.[BililngPostalCode] LIKE '%{1}%' OR
                                                  d.[DeliveryPostalCode] LIKE '%{1}%' OR
                                                  d.[CustomerPostalCode] LIKE '%{1}%' OR
                                                  d.[DeliveryAddress] LIKE '%{1}%' OR
                                                  d.[BillingAddress] LIKE '%{1}%' OR
                                                  s.[Name] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  c.[TradingAs] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <DeliveryNoteCustomModel>(query, parameters.ToArray()).ToList());
        }
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmPSPId", csm.PSPId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(1) AS [Total]
                             FROM
                                [dbo].[Region] r
                                INNER JOIN [dbo].[PSP] p ON p.Id=r.PSPId
                                LEFT OUTER JOIN [dbo].[User] u ON u.Id=r.RegionManagerId";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu WHERE r.PSPId=pu.PSPId AND pu.UserId=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.PSPId != 0)
            {
                query = $"{query} AND r.PSPId=@csmPSPId ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (r.CreatedOn >= @csmFromDate AND r.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (r.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (r.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (r.[Name] LIKE '%{1}%' OR
                                                  r.[Description] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%' OR
                                                  u.[Name] LIKE '%{1}%' OR
                                                  u.[Surname] LIKE '%{1}%' OR
                                                  u.[Email] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #9
0
        /// <summary>
        /// Gets a list of PSPs matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <PSPCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmProductId", csm.ProductId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmPSPClientStatus", ( int )csm.PSPClientStatus) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                p.*,
                                (SELECT COUNT(1) FROM [dbo].[PSPUser] pu WHERE p.Id=pu.PSPId) AS [UserCount],
                                (SELECT COUNT(1) FROM [dbo].[PSPBudget] pb WHERE p.Id=pb.PSPId) AS [BudgetCount],
                                (SELECT COUNT(1) FROM [dbo].[PSPClient] pc WHERE p.Id=pc.PSPId) AS [ClientCount],
                                (SELECT COUNT(1) FROM [dbo].[PSPProduct] pp WHERE p.Id=pp.PSPId) AS [ProductCount],
                                (SELECT COUNT(1) FROM [dbo].[PSPBilling] pi WHERE p.Id=pi.PSPId) AS [InvoiceCount],
                                (SELECT COUNT(1) FROM [dbo].[Document] d WHERE p.Id=d.ObjectId AND d.ObjectType='PSP') AS [DocumentCount]
                             FROM
                                [dbo].[PSP] p";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (!CurrentUser.IsAdmin)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu WHERE p.Id=pu.PSPId AND pu.UserId=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.ClientId != 0)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPClient] pc WHERE p.Id=pc.PSPId AND pc.ClientId=@csmClientId) ";
            }
            if (csm.ProductId != 0)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPProduct] pp WHERE p.Id=pp.PSPId AND pp.ProductId=@csmProductId) ";
            }
            if (csm.PSPClientStatus != Enums.PSPClientStatus.All)
            {
                query = $"{query} AND (p.Status=@csmPSPClientStatus) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (p.CreatedOn >= @csmFromDate AND p.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (p.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (p.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (p.[CompanyName] LIKE '%{1}%' OR
                                                  p.[CompanyRegistrationNumber] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%' OR
                                                  p.[TradingAs] LIKE '%{1}%' OR
                                                  p.[Description] LIKE '%{1}%' OR
                                                  p.[VATNumber] LIKE '%{1}%' OR
                                                  p.[ContactNumber] LIKE '%{1}%' OR
                                                  p.[ContactPerson] LIKE '%{1}%' OR
                                                  p.[Email] LIKE '%{1}%' OR
                                                  p.[AdminEmail] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            List <PSPCustomModel> model = context.Database.SqlQuery <PSPCustomModel>(query, parameters.ToArray()).ToList();

            if (model.NullableAny(p => p.DocumentCount > 0))
            {
                using (DocumentService dservice = new DocumentService())
                {
                    foreach (PSPCustomModel item in model.Where(p => p.DocumentCount > 0))
                    {
                        item.Documents = dservice.List(item.Id, "PSP");
                    }
                }
            }

            return(model);
        }
        /// <summary>
        /// Gets a list of Tickets matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <TicketCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmUserId", csm.UserId) },
                { new SqlParameter("csmTicketId", csm.TicketId) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("useremail", (CurrentUser != null) ? CurrentUser.Email : "") },
            };

            #endregion

            string query = @"SELECT
                                t.*,
                                m.[Details] AS [Message],
                                m.[Status] AS [MessageStatus],
                                m.[CreatedOn] AS [MessageCreatedOn],
                                d.[Description] AS [DepartmentName],
                                m.[SenderUserId] AS [MessageSenderUserId],
                                m.[ReceiverUserId] AS [MessageReceiverUserId],
                                u1.[Name] + ' ' + u1.[Surname] AS [OwnerName],
                                u2.[Name] + ' ' + u2.[Surname] AS [SupportName]
                             FROM
                                [dbo].[Ticket] t
                                LEFT OUTER JOIN [dbo].[User] u1 ON u1.[Id]=t.[OwnerUserId]
                                LEFT OUTER JOIN [dbo].[User] u2 ON u2.[Id]=t.[SupportUserId]
                                LEFT OUTER JOIN [dbo].[Department] d ON d.[Id]=t.[DepartmentId]
                                LEFT OUTER JOIN [dbo].[Message] m ON m.[Id]=(SELECT TOP 1 m1.[Id] FROM [dbo].[Message] m1 WHERE m1.[TicketId]=t.[Id] ORDER BY m1.[CreatedOn] DESC)";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.UserId > 0)
            {
                query = $"{query} AND (t.[OwnerUserId]=@csmUserId OR t.[SupportUserId]=@csmUserId) ";
            }
            if (csm.TicketId > 0)
            {
                query = $"{query} AND (t.[Id]=@csmTicketId) ";
            }
            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (t.[CreatedOn] >= @csmFromDate AND t.[CreatedOn] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (t.[CreatedOn] >= @csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (t.[CreatedOn] <= @csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (t.[Number] LIKE '%{1}%' OR
                                                  m.[Message] LIKE '%{1}%' OR
                                                  u1.[Name] LIKE '%{1}%' OR
                                                  u1.[Surname] LIKE '%{1}%' OR
                                                  u2.[Name] LIKE '%{1}%' OR
                                                  u2.[Surname] LIKE '%{1}%' OR
                                                  d.[Name] LIKE '%{1}%' OR
                                                  d.[Description] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            List <TicketCustomModel> model = context.Database.SqlQuery <TicketCustomModel>(query, parameters.ToArray()).ToList();

            if (model.NullableAny())
            {
                foreach (TicketCustomModel t in model)
                {
                    t.Messages = context.Messages.Where(m => m.TicketId == t.Id).ToList();
                }
            }

            return(model);
        }
        /// <summary>
        /// Gets a list of PSPs matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <RegionCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmProvinceId", csm.ProvinceId) },
                { new SqlParameter("csmPSPId", csm.PSPId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                r.*,
                                p.CompanyName AS [PSPName],
                                p.CompanyName AS [PSPName],
                                c.[Name] AS [CountryName],
                                u.Email AS [RegionManagerEmail],
                                pv.[Description] AS [ProvinceName],
                                u.Name + ' ' + u.Surname AS [RegionManagerName]
                             FROM
                                [dbo].[Region] r
                                INNER JOIN [dbo].[PSP] p ON p.Id=r.PSPId
                                LEFT OUTER JOIN [dbo].[User] u ON u.Id=r.RegionManagerId
                                LEFT OUTER JOIN [dbo].[Country] c ON c.Id=r.CountryId
                                LEFT OUTER JOIN [dbo].[Province] pv ON pv.Id=r.ProvinceId";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu WHERE r.PSPId=pu.PSPId AND pu.UserId=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.PSPId != 0)
            {
                query = $"{query} AND r.PSPId=@csmPSPId ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (r.CreatedOn >= @csmFromDate AND r.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (r.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (r.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (r.[Name] LIKE '%{1}%' OR
                                                  r.[Description] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%' OR
                                                  u.[Name] LIKE '%{1}%' OR
                                                  u.[Surname] LIKE '%{1}%' OR
                                                  u.[Email] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <RegionCustomModel>(query, parameters.ToArray()).ToList());
        }
        /// <summary>
        /// Gets a total number of Items matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("cmsClientId", csm.ClientId) },
                { new SqlParameter("csmChepLoadId", csm.ChepLoadId) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("csmBalanceStatus", ( int )csm.BalanceStatus) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmOutstandingReasonId", csm.OutstandingReasonId) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmReconciliationStatus", ( int )csm.ReconciliationStatus) },
                { new SqlParameter("csmDocketNumber", csm.DocketNumber ?? ( object )DBNull.Value) },
                { new SqlParameter("csmManuallyMatchedUID", csm.ManuallyMatchedUID ?? ( object )DBNull.Value) },
                { new SqlParameter("csmOriginalDocketNumber", csm.OriginalDocketNumber ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(1) AS [Total]
                             FROM
                                [dbo].[ChepLoadJournal] cj
                                INNER JOIN [dbo].[Client] c ON c.Id=cj.ClientId
                                LEFT OUTER JOIN [dbo].[OutstandingReason] r ON r.Id=cj.OutstandingReasonId";

            if (csm.IsPODOutstanding)
            {
                query = $@"{query} LEFT OUTER JOIN [dbo].[ClientLoad] cl1 ON cl1.[Id]=(SELECT TOP 1 cl2.[Id] FROM [dbo].[ClientLoad] cl2 WHERE cl2.[ReceiverNumber]=cj.[Ref] OR cl2.[ReceiverNumber]=cj.[OtherRef])
                                   LEFT OUTER JOIN [dbo].[Vehicle] v ON v.Id=cl1.[VehicleId]
                                   LEFT OUTER JOIN [dbo].[Transporter] t ON t.Id=cl1.[TransporterId]";
            }

            // WHERE

            #region WHERE

            query = $"{ query} WHERE (1=1)";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=c.[Id] AND pu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.IsOP)
            {
                query = $"{query} AND (cj.Quantity > 0)";
                query = $"{query} AND (cj.Ref LIKE '5000%')";
            }
            if (csm.IsPSPPickUp)
            {
                query = $"{query} AND (cj.IsPSPPickup=1)";
            }
            if (csm.IsPODOutstanding)
            {
                query = $"{query} AND (r.IsPODOutstanding=1)";
            }
            if (csm.IsTransporterLiable)
            {
                query = $"{query} AND (cj.TransporterLiable=1)";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.Id=@cmsClientId)";
            }
            if (csm.ChepLoadId > 0)
            {
                query = $"{query} AND (cj.ChepLoadId=@csmChepLoadId)";
            }
            if (csm.BalanceStatus != BalanceStatus.None)
            {
                query = $"{query} AND (cj.BalanceStatus=@csmBalanceStatus)";
            }
            if (csm.ReconciliationStatus != ReconciliationStatus.All)
            {
                query = $"{query} AND (cj.Status=@csmReconciliationStatus)";
            }
            if (csm.OutstandingReasonId > 0)
            {
                query = $"{query} AND (cj.OutstandingReasonId=@csmOutstandingReasonId)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (cj.ShipmentDate >= @csmFromDate AND cj.ShipmentDate <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (cj.ShipmentDate >= @csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (cj.ShipmentDate <= @csmToDate) ";
                }
            }

            if (!string.IsNullOrEmpty(csm.ManuallyMatchedUID))
            {
                query = $"{query} AND (cj.ManuallyMatchedUID=@csmManuallyMatchedUID) ";
            }

            if (!string.IsNullOrEmpty(csm.DocketNumber))
            {
                query = $"{query} AND (cj.DocketNumber=@csmDocketNumber) ";
            }

            if (!string.IsNullOrEmpty(csm.OriginalDocketNumber))
            {
                query = $"{query} AND (cj.OriginalDocketNumber=@csmOriginalDocketNumber) ";
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (cj.[ChepStatus] LIKE '%{1}%' OR
                                                  cj.[TransactionType] LIKE '%{1}%' OR
                                                  cj.[DocketNumber] LIKE '%{1}%' OR
                                                  cj.[OriginalDocketNumber] LIKE '%{1}%' OR
                                                  cj.[UMI] LIKE '%{1}%' OR
                                                  cj.[LocationId] LIKE '%{1}%' OR
                                                  cj.[Location] LIKE '%{1}%' OR
                                                  cj.[OtherPartyId] LIKE '%{1}%' OR
                                                  cj.[OtherParty] LIKE '%{1}%' OR
                                                  cj.[OtherPartyCountry] LIKE '%{1}%' OR
                                                  cj.[EquipmentCode] LIKE '%{1}%' OR
                                                  cj.[Equipment] LIKE '%{1}%' OR
                                                  cj.[Ref] LIKE '%{1}%' OR
                                                  cj.[OtherRef] LIKE '%{1}%' OR
                                                  cj.[BatchRef] LIKE '%{1}%' OR
                                                  cj.[InvoiceNumber] LIKE '%{1}%' OR
                                                  cj.[DataSource] LIKE '%{1}%' OR
                                                  cj.[CreatedBy] LIKE '%{1}%' OR
                                                  cj.[Quantity] LIKE '%{1}%' OR
                                                  c.[Email] LIKE '%{1}%' OR
                                                  c.[AdminEmail] LIKE '%{1}%' OR
                                                  c.[AdminPerson] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  c.[ChepReference] LIKE '%{1}%' OR
                                                  c.[CompanyRegistrationNumber] LIKE '%{1}%' OR
                                                  r.[Description] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #13
0
        /// <summary>
        /// Gets a list of Authorization Codes Audits
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <AuthorizationCodeAuditModel> ListAuthorizationCodeAudit(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmUserId", csm.UserId) },
                { new SqlParameter("csmTransporterId", csm.TransporterId) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
	                            ca.[Id],
	                            cl.[LoadDate],
	                            cl.[LoadNumber],
	                            cl.[DeliveryNote],
	                            s.[Name] AS [ToSiteName],
	                            t.[Name] AS [TransporterName],
                                ca.[Code] AS [AuthorisationCode],
                                cl.[ClientDescription] AS [CustomerName],
                                ca.[AuthorisationDate] AS [AuthorisationDate],
	                            u1.[Name] + ' ' + u1.[Surname] AS [AuthorizerName],
	                            u2.[Name] + ' ' + u2.[Surname] AS [LastEditedByName]
                            FROM
	                            [dbo].[ClientAuthorisation] ca
	                            INNER JOIN [dbo].[User] u1 ON u1.[Id]=ca.[UserId]
	                            INNER JOIN [dbo].[ClientLoad] cl ON cl.[Id]=ca.[ClientLoadId]
	                            LEFT OUTER JOIN [dbo].[ClientSite] cs ON cs.[Id]=cl.[ToClientSiteId]
	                            LEFT OUTER JOIN [dbo].[Site] s ON s.[Id]=cs.[SiteId]
	                            LEFT OUTER JOIN [dbo].[Transporter] t ON t.[Id]=cl.[TransporterId]
	                            LEFT OUTER JOIN [dbo].[User] u2 ON u2.[Email]=cl.[ModifiedBy]"    ;

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=cl.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.UserId > 0)
            {
                query = $"{query} AND (u1.[Id]=@csmUserId)";
            }
            if (csm.SiteId > 0)
            {
                query = $"{query} AND (s.[Id]=@csmSiteId)";
            }
            if (csm.TransporterId > 0)
            {
                query = $"{query} AND (t.[Id]=@csmTransporterId)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (ca.[AuthorisationDate] >= @csmFromDate AND ca.[AuthorisationDate] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (ca.[AuthorisationDate]>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (ca.[AuthorisationDate]<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (u1.[Cell] LIKE '%{1}%' OR
                                                  u1.[Name] LIKE '%{1}%' OR
                                                  u1.[Email] LIKE '%{1}%' OR
                                                  u1.[Surname] LIKE '%{1}%' OR
                                                  u2.[Cell] LIKE '%{1}%' OR
                                                  u2.[Name] LIKE '%{1}%' OR
                                                  u2.[Email] LIKE '%{1}%' OR
                                                  u2.[Surname] LIKE '%{1}%' OR
                                                  cl.[LoadNumber] LIKE '%{1}%' OR
                                                  cl.[DeliveryNote] LIKE '%{1}%' OR
                                                  cl.[ClientDescription] LIKE '%{1}%' OR
                                                  ca.[Code] LIKE '%{1}%' OR
                                                  s.[Name] LIKE '%{1}%' OR
                                                  t.[Name] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = $"{query} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ";

            return(context.Database.SqlQuery <AuthorizationCodeAuditModel>(query, parameters.ToArray()).ToList());
        }
예제 #14
0
        public List <CountModel> ListStats(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmTransporterId", csm.TransporterId) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(cl.Id) AS [Total],
	                            c.CompanyName AS [Description]
                             FROM
                                [dbo].[ClientAuthorisation] ca
                                INNER JOIN [dbo].[ClientLoad] cl ON cl.[Id]=ca.[ClientLoadId]
                                LEFT OUTER JOIN [dbo].[Transporter] t ON t.[Id]=cl.[TransporterId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs ON cs.[Id]=cl.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s ON s.[Id]=cs.[SiteId]
                                LEFT OUTER JOIN [dbo].[Client] c ON c.[Id]=cl.[ClientId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=cl.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.SiteId > 0)
            {
                query = $"{query} AND (s.Id=@csmSiteId)";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.Id=@csmClientId)";
            }
            if (csm.TransporterId > 0)
            {
                query = $"{query} AND (t.Id=@csmTransporterId)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (cl.[EffectiveDate] >= @csmFromDate AND cl.[EffectiveDate] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (cl.[EffectiveDate]>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (cl.[EffectiveDate]<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (cl.[LoadNumber] LIKE '%{1}%' OR
                                                  cl.[AccountNumber] LIKE '%{1}%' OR
                                                  cl.[ClientDescription] LIKE '%{1}%' OR
                                                  cl.[DeliveryNote] LIKE '%{1}%' OR
                                                  cl.[ReferenceNumber] LIKE '%{1}%' OR
                                                  cl.[ReceiverNumber] LIKE '%{1}%' OR
                                                  cl.[Equipment] LIKE '%{1}%' OR
                                                  cl.[PODNumber] LIKE '%{1}%' OR
                                                  cl.[PCNNumber] LIKE '%{1}%' OR
                                                  cl.[PRNNumber] LIKE '%{1}%' OR
                                                  cl.[THAN] LIKE '%{1}%' OR
                                                  cl.[ChepInvoiceNo] LIKE '%{1}%' OR
                                                  cl.[ChepCompensationNo] LIKE '%{1}%' OR
                                                  ca.[Code] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  t.[Name] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            // GROUP

            query = $"{query} GROUP BY c.[CompanyName]";

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            List <CountModel> model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).ToList();

            return(model);
        }
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(1) AS [Total]
                             FROM
                                [dbo].[Broadcast] b";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND (b.ObjectType='PSP' AND b.ObjectId IN({string.Join( ",", CurrentUser.PSPs.Select( s => s.Id ) )})) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND (b.ObjectType='Client' AND b.ObjectId IN({string.Join( ",", CurrentUser.Clients.Select( s => s.Id ) )})) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.Status != Status.All)
            {
                query = $"{query} AND (b.Status=@csmStatus) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (b.CreatedOn >= @csmFromDate AND b.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (b.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (b.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (b.[Message] LIKE '%{1}%') ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #16
0
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmProductId", csm.ProductId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmPSPClientStatus", ( int )csm.PSPClientStatus) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(1) AS [Total]
                             FROM
                                [dbo].[PSP] p";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (!CurrentUser.IsAdmin)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu WHERE p.Id=pu.PSPId AND pu.UserId=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.ClientId != 0)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPClient] pc WHERE p.Id=pc.PSPId AND pc.ClientId=@csmClientId) ";
            }
            if (csm.ProductId != 0)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPProduct] pp WHERE p.Id=pp.PSPId AND pp.ProductId=@csmProductId) ";
            }
            if (csm.PSPClientStatus != Enums.PSPClientStatus.All)
            {
                query = $"{query} AND (p.Status=@csmPSPClientStatus) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (p.CreatedOn >= @csmFromDate AND p.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (p.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (p.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (p.[CompanyName] LIKE '%{1}%' OR
                                                  p.[CompanyRegistrationNumber] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%' OR
                                                  p.[TradingAs] LIKE '%{1}%' OR
                                                  p.[Description] LIKE '%{1}%' OR
                                                  p.[VATNumber] LIKE '%{1}%' OR
                                                  p.[ContactNumber] LIKE '%{1}%' OR
                                                  p.[ContactPerson] LIKE '%{1}%' OR
                                                  p.[Email] LIKE '%{1}%' OR
                                                  p.[AdminEmail] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #17
0
        /// <summary>
        /// Gets a list of leads record for the specified params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            CountModel count;

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("csmRoleType", ( int )csm.RoleType) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = string.Empty;

            query = string.Format(@"SELECT
	                                   COUNT(1) AS [Total]
                                     FROM 
	                                    [dbo].[User] u"    , query);

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu WHERE u.Id=pu.UserId AND pu.UserId=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE u.Id=cu.UserId AND cu.UserId=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.Status != Status.All)
            {
                query = $"{query} AND (u.Status=@csmStatus) ";
            }
            if (csm.RoleType != RoleType.All)
            {
                query = $"{query} AND (u.Type=@csmRoleType) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (u.CreatedOn >= @csmFromDate AND u.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (u.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (u.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (u.[Name] LIKE '%{1}%' OR
                                                  u.[Surname] LIKE '%{1}%' OR
                                                  u.[Email] LIKE '%{1}%' OR
                                                  u.[Cell] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            count = context.Database.SqlQuery <CountModel>(query.Trim(), parameters.ToArray()).FirstOrDefault();

            return(count.Total);
        }
        /// <summary>
        /// Gets a total count of Client Load Audit Log Per User matching the search criteria
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int ClientLoadAuditLogPerUserTotal(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmUserId", csm.UserId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmVehicleId", csm.VehicleId) },
                { new SqlParameter("csmPODCommentId", csm.PODCommentId) },
                { new SqlParameter("csmTransporterId", csm.TransporterId) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            // Query

            #region Query

            string query = @"SELECT
                                COUNT(al.[Id]) AS [Total]
                            FROM
	                            [dbo].[AuditLog] al
	                            LEFT OUTER JOIN [dbo].[User] u1 ON u1.[Id]=al.[UserId]
	                            LEFT OUTER JOIN [dbo].[UserRole] ur ON ur.[UserId]=u1.[Id]
	                            LEFT OUTER JOIN [dbo].[Role] r ON r.[Id]=ur.[RoleId]
	                            LEFT OUTER JOIN [dbo].[ClientLoad] cl ON cl.[Id]=al.[ObjectId]
                                LEFT OUTER JOIN [dbo].[Client] c ON c.[Id]=cl.[ClientId]
	                            LEFT OUTER JOIN [dbo].[ExtendedClientLoad] ecl ON ecl.[ClientLoadId]=cl.[Id]
                                LEFT OUTER JOIN [dbo].[Vehicle] v ON v.[Id]=cl.[VehicleId]
                                LEFT OUTER JOIN [dbo].[Transporter] t ON t.[Id]=cl.[TransporterId]
                                LEFT OUTER JOIN [dbo].[PODComment] pc ON pc.[Id]=cl.[PODCommentId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs1 ON cs1.[Id]=cl.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs2 ON cs2.[Id]=cl.[ToClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s1 ON s1.[Id]=cs1.[SiteId]
                                LEFT OUTER JOIN [dbo].[Site] s2 ON s2.[Id]=cs2.[SiteId]
                                LEFT OUTER JOIN [dbo].[Region] r1 ON r1.[Id]=s1.[RegionId]
                                LEFT OUTER JOIN [dbo].[Region] r2 ON r2.[Id]=s2.[RegionId]
                                LEFT OUTER JOIN [dbo].[ClientAuthorisation] ca ON ca.[ClientLoadId]=cl.[Id]
	                            LEFT OUTER JOIN [dbo].[User] u2 ON u2.[Id]=ca.[UserId]"    ;

            #endregion

            // WHERE

            #region WHERE

            query = $"{query} WHERE (al.[ActionTable]='ClientLoad')";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=cl.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.UserId > 0)
            {
                query = $"{query} AND (u1.[Id]=@csmUserId)";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.[Id]=@csmClientId)";
            }
            if (csm.VehicleId > 0)
            {
                query = $"{query} AND (v.[Id]=@csmVehicleId)";
            }
            if (csm.TransporterId > 0)
            {
                query = $"{query} AND (t.[Id]=@csmTransporterId)";
            }
            if (csm.PODCommentId > 0)
            {
                query = $"{query} AND (pc.[Id]=@csmPODCommentId)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (cl.[PODCommentDate] >= @csmFromDate AND cl.[PODCommentDate] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (cl.[PODCommentDate]>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (cl.[PODCommentDate]<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (pc.[Comment] LIKE '%{1}%' OR
                                                  t.[Name] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  ca.[Code] LIKE '%{1}%' OR
                                                  s1.[Name] LIKE '%{1}%' OR
                                                  s2.[Name] LIKE '%{1}%' OR
                                                  r1.[Code] LIKE '%{1}%' OR
                                                  r2.[Code] LIKE '%{1}%' OR
                                                  r1.[Description] LIKE '%{1}%' OR
                                                  r2.[Description] LIKE '%{1}%' OR
                                                  v.[FleetNumber] LIKE '%{1}%' OR
                                                  v.[Registration] LIKE '%{1}%' OR
                                                  cs1.[ClientCustomerNumber] LIKE '%{1}%' OR
                                                  t.[ClientTransporterCode] LIKE '%{1}%' OR
                                                  cs1.[AccountingCode] LIKE '%{1}%' OR
                                                  u1.[Name] LIKE '%{1}%' OR
                                                  u2.[Name] LIKE '%{1}%' OR
                                                  cl.[LoadNumber] LIKE '%{1}%' OR
                                                  cl.[DeliveryNote] LIKE '%{1}%' OR
                                                  cl.[ReceiverNumber] LIKE '%{1}%' OR
                                                  cl.[PODNumber] LIKE '%{1}%' OR
                                                  cl.[PCNNumber] LIKE '%{1}%' OR
                                                  cl.[THAN] LIKE '%{1}%' OR
                                                  cl.[DebriefDocketNo] LIKE '%{1}%' OR
                                                  ecl.[DocketNumber] LIKE '%{1}%' OR
                                                  ecl.[OriginalDocketNumber] LIKE '%{1}%' OR
                                                  ecl.[LocationId] LIKE '%{1}%' OR
                                                  ecl.[OtherPartyId] LIKE '%{1}%' OR
                                                  ecl.[EquipmentCode] LIKE '%{1}%' OR
                                                  ecl.[Ref] LIKE '%{1}%' OR
                                                  ecl.[OtherRef] LIKE '%{1}%' OR
                                                  ecl.[PalletReturnSlipNo] LIKE '%{1}%' OR
                                                  ecl.[ChepCustomerThanDocNo] LIKE '%{1}%' OR
                                                  ecl.[WarehouseTransferDocNo] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
예제 #19
0
        /// <summary>
        /// Gets a total count of Items matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                COUNT(i.Id) AS [Total]
                             FROM
                                 [dbo].[Invoice] i";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc, [dbo].[ClientLoad] cl WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND cl.[LoadNumber]=i.[LoadNumber] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu, [dbo].[ClientLoad] cl WHERE cu.[ClientId]=cl.[ClientId] AND cl.[LoadNumber]=i.[LoadNumber] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (i.Date >= @csmFromDate AND i.Date <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (i.Date>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (i.Date<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (i.[Number] LIKE '%{1}%' OR
                                                  i.[LoadNumber] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
        /// <summary>
        /// Gets a list of Client Load Audit Log Per User matching the search criteria
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <ClientLoadAuditLogModel> ListClientLoadAuditLogPerUser(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmUserId", csm.UserId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmVehicleId", csm.VehicleId) },
                { new SqlParameter("csmPODCommentId", csm.PODCommentId) },
                { new SqlParameter("csmTransporterId", csm.TransporterId) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            // Query

            #region Query

            string query = @"SELECT
                                s2.[Id] AS [ToSiteId],
	                            al.[Id] AS [AuditLogId],
                                s1.[Id] AS [FromSiteId],
                                r2.[Code] AS [ToRegionCode],
                                r.[Name] AS [AuditUserRole],
                                pc.[Comment] AS [PODComment],
                                t.[Name] AS [TransporterName],
                                r1.[Code] AS [FromRegionCode],
                                c.[CompanyName] AS [ClientName],
	                            ca.[Code] AS [AuthorizationCode],
                                s2.[Description] AS [ToSiteName],
                                s1.[Description] AS [FromSiteName],
                                r2.[Description] AS [ToRegionName],
                                r1.[Description] AS [FromRegionName],
	                            al.[CreatedOn] AS [AuditLogCreatedOn],
                                v.[FleetNumber] AS [VehicleFleetNumber],
                                v.[Registration] AS [VehicleRegistration],
	                            cs1.[ClientCustomerNumber] AS [DebtorsCode],
	                            ca.[AuthorisationDate] AS [AuthorizationDate],
	                            t.ClientTransporterCode AS [TransporterNumber],
	                            cs1.[AccountingCode] AS [CustomerAccountNumber],
                                u1.[Name] + ' ' + u1.[Surname] AS [AuditUserName],
                                u2.[Name] + ' ' + u2.[Surname] AS [AuthorizerName],
	                            al.[AfterImage] AS [ClientLoadAfterImage],
	                            (SELECT al1.[AfterImage] FROM [dbo].[AuditLog] al1 WHERE al1.[ActionTable]='ExtendedClientLoad' AND al1.[ObjectId]=ecl.[Id] AND FORMAT(al.[CreatedOn], 'yyyyMMddHHmmss')=FORMAT(al1.[CreatedOn], 'yyyyMMddHHmmss')) AS [ExtendedClientLoadAfterImage],
	                            al.[CreatedOn] AS [ClientLoadAuditDateTime],
	                            (SELECT al1.[CreatedOn] FROM [dbo].[AuditLog] al1 WHERE al1.[ActionTable]='ExtendedClientLoad' AND al1.[ObjectId]=ecl.[Id] AND FORMAT(al.[CreatedOn], 'yyyyMMddHHmmss')=FORMAT(al1.[CreatedOn], 'yyyyMMddHHmmss')) AS [ExtendedClientLoadAuditDateTime]
                            FROM
	                            [dbo].[AuditLog] al
	                            LEFT OUTER JOIN [dbo].[User] u1 ON u1.[Id]=al.[UserId]
	                            LEFT OUTER JOIN [dbo].[UserRole] ur ON ur.[UserId]=u1.[Id]
	                            LEFT OUTER JOIN [dbo].[Role] r ON r.[Id]=ur.[RoleId]
	                            LEFT OUTER JOIN [dbo].[ClientLoad] cl ON cl.[Id]=al.[ObjectId]
                                LEFT OUTER JOIN [dbo].[Client] c ON c.[Id]=cl.[ClientId]
	                            LEFT OUTER JOIN [dbo].[ExtendedClientLoad] ecl ON ecl.[ClientLoadId]=cl.[Id]
                                LEFT OUTER JOIN [dbo].[Vehicle] v ON v.[Id]=cl.[VehicleId]
                                LEFT OUTER JOIN [dbo].[Transporter] t ON t.[Id]=cl.[TransporterId]
                                LEFT OUTER JOIN [dbo].[PODComment] pc ON pc.[Id]=cl.[PODCommentId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs1 ON cs1.[Id]=cl.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs2 ON cs2.[Id]=cl.[ToClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s1 ON s1.[Id]=cs1.[SiteId]
                                LEFT OUTER JOIN [dbo].[Site] s2 ON s2.[Id]=cs2.[SiteId]
                                LEFT OUTER JOIN [dbo].[Region] r1 ON r1.[Id]=s1.[RegionId]
                                LEFT OUTER JOIN [dbo].[Region] r2 ON r2.[Id]=s2.[RegionId]
                                LEFT OUTER JOIN [dbo].[ClientAuthorisation] ca ON ca.[ClientLoadId]=cl.[Id]
	                            LEFT OUTER JOIN [dbo].[User] u2 ON u2.[Id]=ca.[UserId]"    ;

            #endregion

            // WHERE

            #region WHERE

            query = $"{query} WHERE (al.[ActionTable]='ClientLoad')";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=cl.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.UserId > 0)
            {
                query = $"{query} AND (u1.[Id]=@csmUserId)";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.[Id]=@csmClientId)";
            }
            if (csm.VehicleId > 0)
            {
                query = $"{query} AND (v.[Id]=@csmVehicleId)";
            }
            if (csm.TransporterId > 0)
            {
                query = $"{query} AND (t.[Id]=@csmTransporterId)";
            }
            if (csm.PODCommentId > 0)
            {
                query = $"{query} AND (pc.[Id]=@csmPODCommentId)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (cl.[PODCommentDate] >= @csmFromDate AND cl.[PODCommentDate] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (cl.[PODCommentDate]>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (cl.[PODCommentDate]<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (pc.[Comment] LIKE '%{1}%' OR
                                                  t.[Name] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  ca.[Code] LIKE '%{1}%' OR
                                                  s1.[Name] LIKE '%{1}%' OR
                                                  s2.[Name] LIKE '%{1}%' OR
                                                  r1.[Code] LIKE '%{1}%' OR
                                                  r2.[Code] LIKE '%{1}%' OR
                                                  r1.[Description] LIKE '%{1}%' OR
                                                  r2.[Description] LIKE '%{1}%' OR
                                                  v.[FleetNumber] LIKE '%{1}%' OR
                                                  v.[Registration] LIKE '%{1}%' OR
                                                  cs1.[ClientCustomerNumber] LIKE '%{1}%' OR
                                                  t.[ClientTransporterCode] LIKE '%{1}%' OR
                                                  cs1.[AccountingCode] LIKE '%{1}%' OR
                                                  u1.[Name] LIKE '%{1}%' OR
                                                  u2.[Name] LIKE '%{1}%' OR
                                                  cl.[LoadNumber] LIKE '%{1}%' OR
                                                  cl.[DeliveryNote] LIKE '%{1}%' OR
                                                  cl.[ReceiverNumber] LIKE '%{1}%' OR
                                                  cl.[PODNumber] LIKE '%{1}%' OR
                                                  cl.[PCNNumber] LIKE '%{1}%' OR
                                                  cl.[THAN] LIKE '%{1}%' OR
                                                  cl.[DebriefDocketNo] LIKE '%{1}%' OR
                                                  ecl.[DocketNumber] LIKE '%{1}%' OR
                                                  ecl.[OriginalDocketNumber] LIKE '%{1}%' OR
                                                  ecl.[LocationId] LIKE '%{1}%' OR
                                                  ecl.[OtherPartyId] LIKE '%{1}%' OR
                                                  ecl.[EquipmentCode] LIKE '%{1}%' OR
                                                  ecl.[Ref] LIKE '%{1}%' OR
                                                  ecl.[OtherRef] LIKE '%{1}%' OR
                                                  ecl.[PalletReturnSlipNo] LIKE '%{1}%' OR
                                                  ecl.[ChepCustomerThanDocNo] LIKE '%{1}%' OR
                                                  ecl.[WarehouseTransferDocNo] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = $"{query} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ";

            List <ClientLoadAuditLogModel> model = context.Database.SqlQuery <ClientLoadAuditLogModel>(query, parameters.ToArray()).ToList();

            if (model.NullableAny())
            {
                foreach (ClientLoadAuditLogModel item in model)
                {
                    try
                    {
                        item.ClientLoad = !string.IsNullOrEmpty(item.ClientLoadAfterImage) ? new JavaScriptSerializer().Deserialize <ClientLoadCustomModel>(item.ClientLoadAfterImage) : new ClientLoadCustomModel();
                    }
                    catch (Exception ex)
                    {
                        item.ClientLoad = new ClientLoadCustomModel();
                    }

                    try
                    {
                        item.ExtendedClientLoad = !string.IsNullOrEmpty(item.ExtendedClientLoadAfterImage) ? new JavaScriptSerializer().Deserialize <ExtendedClientLoadCustomModel>(item.ExtendedClientLoadAfterImage) : new ExtendedClientLoadCustomModel();
                    }
                    catch (Exception ex)
                    {
                        item.ExtendedClientLoad = new ExtendedClientLoadCustomModel();
                    }
                }
            }

            return(model);
        }
예제 #21
0
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
	                            COUNT(d.[Id]) AS [Total]
                             FROM
	                            [dbo].[DeliveryNote] d
                                INNER JOIN [dbo].[Client] c ON c.[Id]=d.[ClientId]
                                LEFT OUTER JOIN [dbo].[ClientSite] cs ON cs.[Id]=d.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s ON s.[Id]=cs.[SiteId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show Disputes for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $@"{query} AND EXISTS(SELECT
                                                1
                                              FROM
                                                [dbo].[PSPUser] pu
                                              WHERE
                                                (pu.UserId=@userid) AND
                                                EXISTS(SELECT 1 FROM [dbo].[PSPClient] pc WHERE pc.[PSPId]=pu.[PSPId] AND pc.[ClientId]=c.[Id])
                                             ) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $@"{query} AND EXISTS(SELECT
                                                1
                                              FROM
                                                [dbo].[ClientUser] cu 
                                              WHERE
                                                (cu.UserId=@userid) AND
                                                (cu.ClientId=c.Id)
                                             ) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.ClientId != 0)
            {
                query = $"{query} AND (d.[ClientId]=@csmClientId) ";
            }
            if (csm.SiteId != 0)
            {
                query = $"{query} AND (s.Id=@csmSiteId) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (d.CreatedOn >= @csmFromDate AND d.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (d.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (d.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (d.[CustomerName] LIKE '%{1}%' OR
                                                  d.[CustomerAddress] LIKE '%{1}%' OR
                                                  d.[InvoiceNumber] LIKE '%{1}%' OR
                                                  d.[OrderNumber] LIKE '%{1}%' OR
                                                  d.[Reference306] LIKE '%{1}%' OR
                                                  d.[EmailAddress] LIKE '%{1}%' OR
                                                  d.[BililngPostalCode] LIKE '%{1}%' OR
                                                  d.[DeliveryPostalCode] LIKE '%{1}%' OR
                                                  d.[CustomerPostalCode] LIKE '%{1}%' OR
                                                  d.[DeliveryAddress] LIKE '%{1}%' OR
                                                  d.[BillingAddress] LIKE '%{1}%' OR
                                                  s.[Name] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  c.[TradingAs] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
        /// <summary>
        /// Gets a list of Audit Logs matching the search filters
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public new List <AuditLogCustomModel> List(PagingModel pm, CustomSearchModel csm)
        {
            string[] qs = (csm.Query ?? "").Split(' ');

            List <int> pspIds    = CurrentUser.PSPs.Select(s => s.Id).ToList();
            List <int> clientIds = CurrentUser.Clients.Select(s => s.Id).ToList();

            List <AuditLogCustomModel> list = (from a in context.AuditLogs
                                               join user in context.Users on a.UserId equals user.Id into temp
                                               from u in temp.DefaultIfEmpty()

                                               #region WHERE

                                               where
                                               (
                                                   // WHERE
                                                   (
                                                       (CurrentUser.RoleType == RoleType.PSP ? context.PSPUsers.Any(pu => pu.UserId == a.UserId && pspIds.Contains(pu.PSPId)) : true) &&
                                                       (CurrentUser.RoleType == RoleType.Client ? context.ClientUsers.Any(cu => cu.UserId == a.UserId && clientIds.Contains(cu.ClientId)) : true)
                                                   ) &&

                                                   // CUSTOM SEARCH

                                                   ((csm.UserId != 0) ? a.UserId == csm.UserId : true) &&
                                                   ((csm.ObjectId != 0) ? a.ObjectId == csm.ObjectId : true) &&
                                                   ((!string.IsNullOrEmpty(csm.TableName)) ? a.ActionTable == csm.TableName : true) &&
                                                   ((!string.IsNullOrEmpty(csm.ControllerName)) ? a.Controller == csm.ControllerName : true) &&
                                                   ((csm.FromDate.HasValue) ? DbFunctions.TruncateTime(a.CreatedOn) >= DbFunctions.TruncateTime(csm.FromDate) : true) &&
                                                   ((csm.ToDate.HasValue) ? DbFunctions.TruncateTime(a.CreatedOn) <= DbFunctions.TruncateTime(csm.ToDate) : true) &&
                                                   ((csm.ActivityType != ActivityTypes.All) ? a.Type == ( int )csm.ActivityType : true) &&

                                                   // NORMAL QUERY

                                                   (
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.Parameters) || qs.All(q => a.Parameters.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.BeforeImage) || qs.All(q => a.BeforeImage.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.AfterImage) || qs.All(q => a.AfterImage.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.Action) || qs.All(q => a.Action.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.Comments) || qs.All(q => a.Comments.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.Controller) || qs.All(q => a.Controller.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(a.ActionTable) || qs.All(q => a.ActionTable.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(u.Name) || qs.All(q => u.Name.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(u.Surname) || qs.All(q => u.Surname.ToLower().Contains(q.ToLower()))) : true) ||
                                                       (qs.Any(q => q != "") ? (qs.Contains(u.Email) || qs.All(q => u.Email.ToLower().Contains(q.ToLower()))) : true)
                                                   )
                                               )

                                               #endregion

                                               select new AuditLogCustomModel
            {
                #region Properties

                Id = a.Id,
                Type = a.Type,
                UserId = a.UserId,
                Action = a.Action,
                ObjectId = a.ObjectId,
                Comments = a.Comments,
                CreatedOn = a.CreatedOn,
                Controller = a.Controller,
                ModifiedOn = a.ModifiedOn,
                Parameters = a.Parameters,
                ActionTable = a.ActionTable,
                IsAjaxRequest = a.IsAjaxRequest,

                User = u

                       #endregion
            }).OrderBy(CreateOrderBy(pm.SortBy, pm.Sort))
                                              .Skip(pm.Skip)
                                              .Take(pm.Take)
                                              .ToList();

            return(list);
        }
예제 #23
0
        /// <summary>
        /// Gets a list of Campaign Purchases using the specified params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <VehicleCustomModel> ListCSM(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = string.Format(@"SELECT
	                                         v.*
                                           FROM
	                                         [dbo].[Vehicle] v"    );

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (v.CreatedOn >= @csmFromDate AND v.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (v.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (v.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (LOWER(REPLACE(v.Registration, ' ', '')) LIKE '%{1}%') ", query, csm.Query.Trim().ToLower());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <VehicleCustomModel>(query.Trim(), parameters.ToArray()).ToList());
        }
예제 #24
0
        /// <summary>
        /// Gets a list of Client KPIs matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <ClientKPICustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                k.*,
                                c.[CompanyName] AS [ClientName]
                            FROM
                                [dbo].[ClientKPI] k
                                INNER JOIN [dbo].[Client] c ON c.Id=k.ClientId";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show KPIs for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $@"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu INNER JOIN [dbo].[PSPClient] pc ON pc.PSPId=pu.PSPId WHERE pc.ClientId=c.Id AND pu.UserId=@userid ) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.UserId=@userid AND cu.ClientId=c.Id)";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.ClientId != 0)
            {
                query = $"{query} AND k.ClientId=@csmClientId ";
            }
            if (csm.Status != Status.All)
            {
                query = $"{query} AND k.Status=@csmStatus ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (k.CreatedOn >= @csmFromDate AND k.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (k.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (k.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  k.[KPIDescription] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <ClientKPICustomModel>(query, parameters.ToArray()).ToList());
        }
예제 #25
0
        /// <summary>
        /// Gets a list of Site Audits matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <SiteAuditCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmPSPId", csm.PSPId) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmSact", Status.Active) },
                { new SqlParameter("csmStatus", csm.Status) },
            };

            #endregion

            string query = @"SELECT
	                            sa.*,
	                            s.Name AS [SiteName],
	                            p.CompanyName AS [PSPName],
	                            c.CompanyName AS [ClientName],
	                            (SELECT TOP 1 d.Id FROM [dbo].[Document] d WHERE d.ObjectId=sa.Id AND d.ObjectType='SiteAudit' AND d.Status=@csmSact) AS [ReportDocumentId]
                             FROM
	                            [dbo].[SiteAudit] sa
                                INNER JOIN [dbo].[Site] s ON s.[Id]=sa.[SiteId]
                                LEFT OUTER JOIN [dbo].[Client] c ON c.[Id]=sa.[ClientId]
                                LEFT OUTER JOIN [dbo].[PSPClient] pc ON pc.[ClientId]=c.[Id]
                                LEFT OUTER JOIN [dbo].[PSP] p ON pc.[PSPId]=p.[Id]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show Disputes for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=sa.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=sa.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.SiteId != 0)
            {
                query = $"{query} AND (sa.SiteId=@csmSiteId) ";
            }
            if (csm.ClientId != 0)
            {
                query = $"{query} AND (sa.ClientId=@csmClientId) ";
            }
            if (csm.PSPId != 0)
            {
                query = $"{query} AND (sa.PSPId=@csmPSPId) ";
            }

            if (csm.Status != Status.All)
            {
                query = $"{query} AND (sa.Status=@csmStatus) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (sa.AuditDate >= @csmFromDate AND sa.AuditDate <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (sa.AuditDate>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (sa.AuditDate<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (s.[Name] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  c.[ChepReference] LIKE '%{1}%' OR
                                                  c.[ContactPerson] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%' OR
                                                  p.[ContactPerson] LIKE '%{1}%' OR
                                                  sa.[Equipment] LIKE '%{1}%' OR
                                                  sa.[CustomerName] LIKE '%{1}%' OR
                                                  sa.[RepName] LIKE '%{1}%' OR
                                                  sa.[PalletAuditor] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <SiteAuditCustomModel>(query, parameters.ToArray()).ToList());
        }
        /// <summary>
        /// Gets a total count of Billing items matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public int Total1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmPSPId", csm.PSPId) },
                { new SqlParameter("csmPSPProductId", csm.PSPProductId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
	                            COUNT(b.[Id]) AS [Total]
                             FROM
	                            [dbo].[PSPBilling] b
                                INNER JOIN [dbo].[PSP] p ON p.[Id]=b.[PSPId]
                                INNER JOIN [dbo].[PSPProduct] p1 ON p1.[Id]=b.[PSPProductId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show Disputes for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $@"{query} AND EXISTS(SELECT
                                                1
                                              FROM
                                                [dbo].[PSPUser] pu
                                              WHERE
                                                (pu.UserId=@userid) AND
                                                (b.[PSPId]=pu.[PSPId])
                                                )
                                             ) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $@"{query} AND EXISTS(SELECT
                                                1
                                              FROM
                                                [dbo].[ClientUser] cu 
                                              WHERE
                                                (cu.UserId=@userid) AND
                                                (EXISTS(SELECT 1 FROM [dbo].[PSPClient] pc
                                                        WHERE
                                                            (pc.[ClientId]=cu.[ClientId]) AND
                                                            (pc.[PSPId]=b.[PSPId])
                                                       )
                                                )
                                             ) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.PSPId != 0)
            {
                query = $"{query} AND (p.Id=@csmPSPId) ";
            }
            if (csm.PSPProductId != 0)
            {
                query = $"{query} AND (p1.Id=@csmPSPProductId) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (b.CreatedOn >= @csmFromDate AND b.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (b.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (b.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (b.[StatementNumber] LIKE '%{1}%' OR
                                                  b.[ReferenceNumber] LIKE '%{1}%' OR
                                                  b.[NominatedAccount] LIKE '%{1}%' OR
                                                  p.[CompanyRegistrationNumber] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%' OR
                                                  p.[TradingAs] LIKE '%{1}%' OR
                                                  p.[Description] LIKE '%{1}%' OR
                                                  p.[VATNumber] LIKE '%{1}%' OR
                                                  p.[ContactNumber] LIKE '%{1}%' OR
                                                  p.[ContactPerson] LIKE '%{1}%' OR
                                                  p.[FinancialPerson] LIKE '%{1}%' OR
                                                  p.[Email] LIKE '%{1}%' OR
                                                  p.[AdminEmail] LIKE '%{1}%' OR
                                                  p1.[Name] LIKE '%{1}%' OR
                                                  p1.[Description] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            CountModel model = context.Database.SqlQuery <CountModel>(query, parameters.ToArray()).FirstOrDefault();

            return(model.Total);
        }
        /// <summary>
        /// Gets a list of Chep Audits matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <ChepAuditCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmSact", ( object )Status.Active) },
            };

            #endregion

            string query = @"SELECT
	                            ca.*,
	                            s.Name AS [SiteName],
	                            (SELECT TOP 1 d.Id FROM [dbo].[Document] d WHERE d.ObjectId=ca.Id AND d.ObjectType='ChepAudit' AND d.Status=@csmSact) AS [ReportDocumentId]
                             FROM
	                            [dbo].[ChepAudit] ca
                                INNER JOIN [dbo].[Site] s ON s.[Id]=ca.[SiteId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show Disputes for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[Region] r WHERE (r.[Id]=s.[RegionId]) AND (pu.UserId=@userid) AND (r.[PSPId]=pu.[PSPId])) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE (cu.UserId=@userid) AND (EXISTS(SELECT 1 FROM [dbo].[ClientSite] cs WHERE cs.[SiteId]=s.[Id]))) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.SiteId != 0)
            {
                query = $"{query} AND (ca.SiteId=@csmSiteId) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (ca.CreatedOn >= @csmFromDate AND ca.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (ca.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (ca.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (s.[Name] LIKE '%{1}%' OR
                                                  s.[Description] LIKE '%{1}%' OR
                                                  ca.[Equipment] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <ChepAuditCustomModel>(query, parameters.ToArray()).ToList());
        }
        public List <BroadcastCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmStatus", ( int )csm.Status) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
            };

            #endregion

            string query = @"SELECT
                                b.*,
                                (SELECT COUNT(1) FROM [dbo].[UserBroadcast] ub WHERE b.Id=ub.[BroadcastId]) AS [XRead],
                                (SELECT p.CompanyName + ' (PSP)' FROM [dbo].[PSP] p WHERE p.Id=b.[ObjectId] AND b.ObjectType='PSP') AS [PSPName],
                                (SELECT c.CompanyName + ' (Client)' FROM [dbo].[Client] c WHERE c.Id=b.[ObjectId] AND b.ObjectType='Client') AS [ClientName]
                             FROM
                                [dbo].[Broadcast] b";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show PSP for logged in user
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND (b.ObjectType='PSP' AND b.ObjectId IN({string.Join( ",", CurrentUser.PSPs.Select( s => s.Id ) )})) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND (b.ObjectType='Client' AND b.ObjectId IN({string.Join( ",", CurrentUser.Clients.Select( s => s.Id ) )})) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.Status != Status.All)
            {
                query = $"{query} AND (b.Status=@csmStatus) ";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (b.CreatedOn >= @csmFromDate AND b.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (b.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (b.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (b.[Message] LIKE '%{1}%') ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            List <BroadcastCustomModel> model = context.Database.SqlQuery <BroadcastCustomModel>(query, parameters.ToArray()).ToList();

            if (csm.IncludeUserBroadCasts)
            {
                foreach (BroadcastCustomModel item in model)
                {
                    item.UserBroadcasts = context.UserBroadcasts.Where(ub => ub.BroadcastId == item.Id).ToList();
                }
            }

            return(model);
        }
        /// <summary>
        /// Gets a list of Clients matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <ClientCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("csmPSPId", csm.PSPId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmStatus", ( int )csm.PSPClientStatus) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("useremail", (CurrentUser != null) ? CurrentUser.Email : "") },
            };

            #endregion

            string query = @"SELECT
                                c.*,
                                p.CompanyName as [PSPCompanyName],
                                pc.ContractRenewalDate as [ContractRenewalDate],
                                (SELECT COUNT(1) FROM [dbo].[ClientUser] cu WHERE c.Id=cu.ClientId) AS [UserCount],
                                (SELECT COUNT(1) FROM [dbo].[ClientBudget] cb WHERE c.Id=cb.ClientId) AS [BudgetCount],
                                (SELECT COUNT(1) FROM [dbo].[ClientProduct] cp WHERE c.Id=cp.ClientId) AS [ProductCount],
                                (SELECT COUNT(1) FROM [dbo].[Document] d WHERE c.Id=d.ObjectId AND d.ObjectType='Client') AS [DocumentCount],
                                (SELECT COUNT(1) FROM [dbo].[EstimatedLoad] el WHERE c.Id=el.ObjectId AND el.ObjectType='Client') AS [EstimatedLoadCount],
                                (SELECT COUNT(1) FROM [dbo].[ClientInvoice] ci, [dbo].[ClientLoad] cl WHERE cl.Id=ci.ClientLoadId AND c.Id=cl.ClientId) AS [InvoiceCount]
                             FROM
                                [dbo].[Client] c
                                LEFT OUTER JOIN [dbo].[PSPClient] pc ON pc.Id=(SELECT TOP 1 pc1.Id FROM [dbo].[PSPClient] pc1 WHERE pc1.ClientId=pc.ClientId AND pc1.ClientId=c.Id)
                                LEFT OUTER JOIN [dbo].[PSP] p ON p.Id=pc.PSPId";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            // Limit to only show clients for logged in PSP
            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $@"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu INNER JOIN [dbo].[PSPClient] pc ON pc.PSPId=pu.PSPId WHERE pc.ClientId=c.Id AND pu.UserId=@userid ) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.UserId=@userid AND cu.ClientId=c.Id)";
            }
            else if (CurrentUser.RoleType == RoleType.Transporter)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[Transporter] t WHERE t.[Id]=cl.[TransporterId] AND t.[Email]=@useremail)";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.PSPId > 0)
            {
                query = $"{query} AND (p.Id=@csmPSPId) ";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.Id=@csmClientId) ";
            }

            if (csm.PSPClientStatus != PSPClientStatus.All)
            {
                query = $"{query} AND (c.Status=@csmStatus) ";
            }
            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (c.CreatedOn >= @csmFromDate AND c.CreatedOn <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (c.CreatedOn>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (c.CreatedOn<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (c.[CompanyName] LIKE '%{1}%' OR
                                                  c.[CompanyRegistrationNumber] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  c.[TradingAs] LIKE '%{1}%' OR
                                                  c.[Description] LIKE '%{1}%' OR
                                                  c.[VATNumber] LIKE '%{1}%' OR
                                                  c.[ContactNumber] LIKE '%{1}%' OR
                                                  c.[ContactPerson] LIKE '%{1}%' OR
                                                  c.[FinancialPerson] LIKE '%{1}%' OR
                                                  c.[FinPersonEmail] LIKE '%{1}%' OR
                                                  c.[Email] LIKE '%{1}%' OR
                                                  c.[AdminEmail] LIKE '%{1}%' OR
                                                  c.[AdminPerson] LIKE '%{1}%' OR
                                                  c.[ChepReference] LIKE '%{1}%' OR
                                                  c.[AdminPerson] LIKE '%{1}%' OR
                                                  p.[CompanyName] LIKE '%{1}%'
                                             ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            List <ClientCustomModel> model = context.Database.SqlQuery <ClientCustomModel>(query, parameters.ToArray()).ToList();

            if (model.NullableAny(c => c.DocumentCount > 0))
            {
                using (DocumentService dservice = new DocumentService())
                {
                    foreach (ClientCustomModel item in model.Where(c => c.DocumentCount > 0))
                    {
                        item.Documents = dservice.List(item.Id, "Client");
                    }
                }
            }

            return(model);
        }
예제 #30
0
        /// <summary>
        /// Gets a list of Items matching the specified search params
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="csm"></param>
        /// <returns></returns>
        public List <ClientAuthorisationCustomModel> List1(PagingModel pm, CustomSearchModel csm)
        {
            if (csm.FromDate.HasValue && csm.ToDate.HasValue && csm.FromDate?.Date == csm.ToDate?.Date)
            {
                csm.ToDate = csm.ToDate?.AddDays(1);
            }

            // Parameters

            #region Parameters

            List <object> parameters = new List <object>()
            {
                { new SqlParameter("skip", pm.Skip) },
                { new SqlParameter("take", pm.Take) },
                { new SqlParameter("query", csm.Query ?? ( object )DBNull.Value) },
                { new SqlParameter("csmToDate", csm.ToDate ?? ( object )DBNull.Value) },
                { new SqlParameter("userid", (CurrentUser != null) ? CurrentUser.Id : 0) },
                { new SqlParameter("csmFromDate", csm.FromDate ?? ( object )DBNull.Value) },
                { new SqlParameter("csmSiteId", csm.SiteId) },
                { new SqlParameter("csmClientId", csm.ClientId) },
                { new SqlParameter("csmTransporterId", csm.TransporterId) },
            };

            #endregion

            string query = @"SELECT
                                ca.Status AS [Status],
                                cl.*,
                                ca.Code AS [Code],
                                c.CompanyName AS [ClientName],
                                s2.Description AS [ToSiteName],
                                s1.Description AS [FromSiteName],
                                ca.Id AS [ClientAuthorisationId],
                                t.TradingName AS [TransporterName],
                                ca.Comment AS [AuthorisationComment],
                                v.Registration AS [VehicleRegistration],
                                ca.AuthorisationDate AS [AuthorisationDate],
                                u.Name + ' ' + u.Surname AS [AuthoriserName]
                             FROM
                                [dbo].[ClientLoad] cl
                                LEFT OUTER JOIN [dbo].[ClientAuthorisation] ca ON cl.[Id]=ca.[ClientLoadId]
                                LEFT OUTER JOIN [dbo].[User] u ON u.[Id]=ca.[UserId]
                                LEFT OUTER JOIN [dbo].[Vehicle] v ON v.[Id]=cl.[VehicleId]
                                LEFT OUTER JOIN [dbo].[Transporter] t ON t.[Id]=cl.[TransporterId]

                                LEFT OUTER JOIN [dbo].[ClientSite] cs1 ON cs1.[Id]=cl.[ClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s1 ON s1.[Id]=cs1.[SiteId]

                                LEFT OUTER JOIN [dbo].[ClientSite] cs2 ON cs2.[Id]=cl.[ToClientSiteId]
                                LEFT OUTER JOIN [dbo].[Site] s2 ON s2.[Id]=cs2.[SiteId]

                                LEFT OUTER JOIN [dbo].[Client] c ON c.[Id]=cl.[ClientId]";

            // WHERE

            #region WHERE

            query = $"{query} WHERE (1=1)";

            if (CurrentUser.RoleType == RoleType.PSP)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[PSPUser] pu, [dbo].[PSPClient] pc WHERE pu.[PSPId]=pc.[PSPId] AND pc.[ClientId]=cl.[ClientId] AND pu.[UserId]=@userid) ";
            }
            else if (CurrentUser.RoleType == RoleType.Client)
            {
                query = $"{query} AND EXISTS(SELECT 1 FROM [dbo].[ClientUser] cu WHERE cu.[ClientId]=cl.[ClientId] AND cu.[UserId]=@userid) ";
            }

            #endregion

            // Custom Search

            #region Custom Search

            if (csm.SiteId > 0)
            {
                query = $"{query} AND (s1.Id=@csmSiteId)";
            }
            if (csm.ClientId > 0)
            {
                query = $"{query} AND (c.Id=@csmClientId)";
            }
            if (csm.VehicleId > 0)
            {
                query = $"{query} AND (v.Id=@csmVehicleId)";
            }
            if (csm.TransporterId > 0)
            {
                query = $"{query} AND (t.Id=@csmTransporterId)";
            }
            if (csm.HasAuthorisationCode)
            {
                query = $"{query} AND (ca.Id IS NOT NULL)";
            }

            if (csm.FromDate.HasValue && csm.ToDate.HasValue)
            {
                query = $"{query} AND (ca.[AuthorisationDate] >= @csmFromDate AND ca.[AuthorisationDate] <= @csmToDate) ";
            }
            else if (csm.FromDate.HasValue || csm.ToDate.HasValue)
            {
                if (csm.FromDate.HasValue)
                {
                    query = $"{query} AND (ca.[AuthorisationDate]>=@csmFromDate) ";
                }
                if (csm.ToDate.HasValue)
                {
                    query = $"{query} AND (ca.[AuthorisationDate]<=@csmToDate) ";
                }
            }

            #endregion

            // Normal Search

            #region Normal Search

            if (!string.IsNullOrEmpty(csm.Query))
            {
                query = string.Format(@"{0} AND (cl.[LoadNumber] LIKE '%{1}%' OR
                                                  cl.[AccountNumber] LIKE '%{1}%' OR
                                                  cl.[ClientDescription] LIKE '%{1}%' OR
                                                  cl.[DeliveryNote] LIKE '%{1}%' OR
                                                  cl.[ReferenceNumber] LIKE '%{1}%' OR
                                                  cl.[ReceiverNumber] LIKE '%{1}%' OR
                                                  cl.[Equipment] LIKE '%{1}%' OR
                                                  cl.[PODNumber] LIKE '%{1}%' OR
                                                  cl.[PCNNumber] LIKE '%{1}%' OR
                                                  cl.[PRNNumber] LIKE '%{1}%' OR
                                                  cl.[THAN] LIKE '%{1}%' OR
                                                  cl.[ChepCompensationNo] LIKE '%{1}%' OR
                                                  ca.[Code] LIKE '%{1}%' OR
                                                  s1.[Name] LIKE '%{1}%' OR
                                                  s1.[Description] LIKE '%{1}%' OR
                                                  s2.[Name] LIKE '%{1}%' OR
                                                  s2.[Description] LIKE '%{1}%' OR
                                                  c.[CompanyName] LIKE '%{1}%' OR
                                                  t.[Name] LIKE '%{1}%' OR
                                                  v.[Registration] LIKE '%{1}%' OR
                                                  u.[Name] LIKE '%{1}%' OR
                                                  u.[Surname] LIKE '%{1}%' OR
                                                  u.[Email] LIKE '%{1}%' OR
                                                  u.[Cell] LIKE '%{1}%'
                                                 ) ", query, csm.Query.Trim());
            }

            #endregion

            // ORDER

            query = $"{query} ORDER BY {pm.SortBy} {pm.Sort}";

            // SKIP, TAKE

            query = string.Format("{0} OFFSET (@skip) ROWS FETCH NEXT (@take) ROWS ONLY ", query);

            return(context.Database.SqlQuery <ClientAuthorisationCustomModel>(query, parameters.ToArray()).ToList());
        }