public List <BusinessObjects.Ticket> GetTicketList()
        {
            Logger.TraceMethodStart(ClassName, "GetTicketList");

            var ticket = default(List <BusinessObjects.Ticket>);


            try
            {
                using (var db = new DAL.EntityModel.BugTrackingEntities())
                {
                    var query = db.Tickets.Where(c => c.Active == true)
                                .Include(x => x.Status)
                                .Include(x => x.Priority)
                                .Include(x => x.Category)
                                .Include(x => x.User)
                                .Include(x => x.Product)
                                .Include(x => x.Organization).ToList();
                    ;

                    ticket = MapperAllLevels.Map <List <DAL.EntityModel.Ticket>, List <BusinessObjects.Ticket> >(query);
                    return(ticket);
                }
            }
            catch (Exception ex)
            {
                Logger.TraceError("Exception:", ex);
                throw;
            }

            finally
            {
                Logger.TraceMethodEnd(ClassName, "GetTicketList");
            }
        }
        public BusinessObjects.Ticket DeleteTicket(long Id)
        {
            Logger.TraceMethodStart(ClassName, "DeleteTicket");

            var ticket = default(BusinessObjects.Ticket);

            try
            {
                using (var db = new DAL.EntityModel.BugTrackingEntities())
                {
                    var query = db.Tickets.Where(c => c.ID == Id && c.Active == true).FirstOrDefault();
                    ticket = MapperAllLevels.Map <DAL.EntityModel.Ticket, BusinessObjects.Ticket>(query);
                    return(ticket);
                }
            }

            catch (Exception ex)
            {
                Logger.TraceError("Exception: ", ex);
                throw;
            }

            finally
            {
                Logger.TraceMethodEnd(ClassName, "DeleteProduct");
            }
        }
        public List <BusinessObjects.Ticket> GetFilteredTechnicianTicketList(BusinessObjects.Ticket filter)
        {
            Logger.TraceMethodStart(ClassName, "GetFilteredTechnicianTicketList");

            var ticket = default(List <BusinessObjects.Ticket>);


            try
            {
                using (var db = new DAL.EntityModel.BugTrackingEntities())
                {
                    var UserID   = System.Web.HttpContext.Current.User.Identity.GetUserId();
                    var Assigned = db.Users.Where(c => c.UserId == UserID).Select(c => c.ID).First();
                    var query    = db.Tickets.Where(c => c.Active == true && c.AssigneeID == Assigned);
                    if (filter.ProductID.ToString() != "0")
                    {
                        query = query.Where(c => c.ProductID == filter.ProductID);
                    }
                    if (filter.CategoryID.ToString() != "0")
                    {
                        query = query.Where(c => c.CategoryID == filter.CategoryID);
                    }
                    if (filter.StatusID.ToString() != "0")
                    {
                        query = query.Where(c => c.StatusID == filter.StatusID);
                    }
                    if (filter.OrganizationID.ToString() != "0")
                    {
                        query = query.Where(c => c.OrganizationID == filter.OrganizationID);
                    }
                    if (filter.PriorityID.ToString() != "0")
                    {
                        query = query.Where(c => c.PriorityID == filter.PriorityID);
                    }
                    query = query.Include(x => x.Status)
                            .Include(x => x.Priority)
                            .Include(x => x.Category)
                            .Include(x => x.User)
                            .Include(x => x.Product)
                            .Include(x => x.Organization);
                    ;
                    ;

                    ticket = MapperAllLevels.Map <List <DAL.EntityModel.Ticket>, List <BusinessObjects.Ticket> >(query.ToList());
                    return(ticket);
                }
            }
            catch (Exception ex)
            {
                Logger.TraceError("Exception:", ex);
                throw;
            }

            finally
            {
                Logger.TraceMethodEnd(ClassName, "GetFilteredTechnicianTicketList");
            }
        }
        public BugTrackingResponse <Ticket> Save(Ticket ticket)
        {
            Logger.TraceMethodStart(ClassName, "SaveTicket");

            var response = new BugTrackingResponse <BusinessObjects.Ticket>();

            using (var db = new DAL.EntityModel.BugTrackingEntities())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var UserID = System.Web.HttpContext.Current.User.Identity.GetUserId();
                        ticket.UserID = UserID;
                        var validator = new TicketSaveSpecificaion();
                        var result    = validator.Validate(ticket);
                        var failures  = result.Errors;

                        response.ValidationResult = result;

                        if (result.IsValid)
                        {
                            ticket.Active       = true;
                            ticket.DateCreated  = DateTime.Now;
                            ticket.LastModified = DateTime.Now;

                            var _ticket = MapperAllLevels.Map <BusinessObjects.Ticket, DAL.EntityModel.Ticket>(ticket);
                            db.Tickets.Add(_ticket);
                            db.SaveChanges();
                            transaction.Commit();
                        }

                        else
                        {
                            transaction.Rollback();
                            Logger.TraceErrorFormat("Error while Saving {0}", response.ValidationResult.Errors);
                        }

                        return(response);
                    }

                    catch (Exception ex)
                    {
                        Logger.TraceError("Exception: ", ex);
                        transaction.Rollback();
                        throw;
                    }

                    finally
                    {
                        Logger.TraceMethodEnd(ClassName, "SaveTicket");
                    }
                }
            }
        }
        public BugTrackingResponse <BusinessObjects.Ticket> DeleteTicketConfirmed(long Id)
        {
            Logger.TraceMethodStart(ClassName, "DeleteTicket");

            var response = new BugTrackingResponse <BusinessObjects.Ticket>();

            using (var db = new DAL.EntityModel.BugTrackingEntities())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var query  = db.Tickets.Where(c => c.ID == Id && c.Active == true).FirstOrDefault();
                        var ticket = MapperAllLevels.Map <DAL.EntityModel.Ticket, BusinessObjects.Ticket>(query);

                        var validator = new TicketDeleteSpecification();
                        var result    = validator.Validate(ticket);
                        var failures  = result.Errors;

                        response.ValidationResult = result;

                        if (result.IsValid)
                        {
                            query.Active       = false;
                            query.LastModified = DateTime.Now;
                            db.SaveChanges();
                            transaction.Commit();
                        }

                        else
                        {
                            transaction.Rollback();
                            Logger.TraceErrorFormat("Error while Saving {0}", response.ValidationResult.Errors);
                        }

                        return(response);
                    }

                    catch (Exception ex)
                    {
                        Logger.TraceError("Exception: ", ex);
                        transaction.Rollback();
                        throw;
                    }

                    finally
                    {
                        Logger.TraceMethodEnd(ClassName, "DeleteTicketConfirmed");
                    }
                }
            }
        }