public IHttpActionResult EmployeeSalary(ReportingParameters reportingParameters) { int CinemaID = reportingParameters.CinemaID; bool Gender = reportingParameters.Gender; var Employments = principal.Employments.ToList() .Where(x => !x.IsDeleted && x.Employees.CinemaID == CinemaID && !x.Employees.IsDeleted && x.Employees.Gender == Gender ).ToList(); if (Employments.Count == 0) { return(BadRequest()); } var allEmps = new List <dynamic>(); foreach (var item in Employments) { allEmps.Add(new { item.EmployeeID, FullName = $"{item.Employees.FirstName} {item.Employees.LastName}", Gender = (!item.Employees.Gender) ? "Male" : "Female", item.EmploymentID, EmploymentType = item.EmploymentTypes.Name, CurrentSalary = item.CurrentSalary }); } return(Ok(allEmps)); }
public IHttpActionResult ProfitByPaymentMethods(ReportingParameters reportingParameters) { var CinemaID = reportingParameters.CinemaID; DateTime DateTimeFrom = reportingParameters.DateTimeFrom; DateTime DateTimeTo = reportingParameters.DateTimeTo; int TechTypeID = reportingParameters.TechTypeID; var payMethods = principal.PaymentMethods.ToList(); var dctprofitByPaymentMethods = new Dictionary <string, Dictionary <string, decimal> >(); var fltTechTypes = new List <int>(); fltTechTypes.AddRange((TechTypeID == 0) ? principal.TechnologyTypes.Select(x => x.TechnologyTypeID).ToList() : principal.TechnologyTypes.Where(x => x.TechnologyTypeID == TechTypeID).Select(x => x.TechnologyTypeID).ToList()); foreach (var item in payMethods) { var DICTprofitByPaymentMethods = (from T in principal.Tickets join P in principal.Projections on T.ProjectionID equals P.ProjectionID join CHS in principal.CinemaHalls on P.CinemaHallID equals CHS.CinemaHallID join CS in principal.Cinemas on CHS.CinemaID equals CS.CinemaID join R in principal.Reservations on T.ReservationID equals R.ReservationID join PM in principal.PaymentMethods on R.PaymentMethodID equals PM.PaymentMethodID join TT in principal.TechnologyTypes on P.TechnologyTypeID equals TT.TechnologyTypeID where P.DateTimeStart >= DateTimeFrom && P.DateTimeStart <= DateTimeTo && CS.CinemaID == CinemaID && PM.PaymentMethodID == item.PaymentMethodID && fltTechTypes.Contains(TT.TechnologyTypeID) group T by new { T.Projections.DateTimeStart.Day, T.Projections.DateTimeStart.Month, T.Projections.DateTimeStart.Year } into Tgroup orderby Tgroup.Key.Day select new { DateDayMonth = Tgroup.Key.Day.ToString() + "." + Tgroup.Key.Month.ToString(), Total = Tgroup.Sum(x => x.TicketPrice) }).ToDictionary(t => t.DateDayMonth, t => t.Total); dctprofitByPaymentMethods.Add( item.Name, DICTprofitByPaymentMethods); } if (dctprofitByPaymentMethods.Count == 0) { return(NotFound()); } return(Ok(dctprofitByPaymentMethods)); }
public IHttpActionResult SeatReservationFrequencyReporting(ReportingParameters reportingParameters) { var CinemaID = reportingParameters.CinemaID; var TechTypeID = reportingParameters.TechTypeID; DateTime DateTimeFrom = reportingParameters.DateTimeFrom; DateTime DateTimeTo = reportingParameters.DateTimeTo; var fltTechTypes = new List <int>(); fltTechTypes.AddRange((TechTypeID == 0) ? principal.TechnologyTypes.Select(x => x.TechnologyTypeID).ToList() : principal.TechnologyTypes.Where(x => x.TechnologyTypeID == TechTypeID).Select(x => x.TechnologyTypeID).ToList()); var dctSeatReservationFrequency = (from T in principal.Tickets join P in principal.Projections on T.ProjectionID equals P.ProjectionID join M in principal.Movies on P.MovieID equals M.MovieID join G in principal.Genres on M.GenreID equals G.GenreID join TT in principal.TechnologyTypes on P.TechnologyTypeID equals TT.TechnologyTypeID join CHS in principal.CinemaHalls on P.CinemaHallID equals CHS.CinemaHallID join CS in principal.Cinemas on CHS.CinemaID equals CS.CinemaID where P.DateTimeStart >= DateTimeFrom && P.DateTimeStart <= DateTimeTo && fltTechTypes.Contains(TT.TechnologyTypeID) && CS.CinemaID == CinemaID group T by T.Seats into SeatGroup orderby SeatGroup.Count() descending select new { SeatID = SeatGroup.Key.SeatID, SeatLabel = SeatGroup.Key.SeatRows.SeatRowLbl + SeatGroup.Key.SeatColumns.SeatColumnLbl, CinemaHall = SeatGroup.Key.CinemaHalls.Name, TotalFrequency = SeatGroup.Count() }).Take(10) .ToDictionary(t => t.SeatID, t => new { SeatLabel = t.SeatLabel, CinemaHall = t.CinemaHall, TotalFrequency = t.TotalFrequency }); if (dctSeatReservationFrequency.Count == 0) { return(NotFound()); } return(Ok(dctSeatReservationFrequency)); }
public IHttpActionResult ProfitByMovies(ReportingParameters reportingParameters) { var fltTechTypes = new List <int>(); var CinemaID = reportingParameters.CinemaID; var TechTypeID = reportingParameters.TechTypeID; DateTime DateTimeFrom = reportingParameters.DateTimeFrom; DateTime DateTimeTo = reportingParameters.DateTimeTo; fltTechTypes.AddRange((TechTypeID == 0) ? principal.TechnologyTypes.Select(x => x.TechnologyTypeID).ToList() : principal.TechnologyTypes.Where(x => x.TechnologyTypeID == TechTypeID).Select(x => x.TechnologyTypeID).ToList()); var profitByMovie = (from T in principal.Tickets join P in principal.Projections on T.ProjectionID equals P.ProjectionID join M in principal.Movies on P.MovieID equals M.MovieID join TT in principal.TechnologyTypes on P.TechnologyTypeID equals TT.TechnologyTypeID join CHS in principal.CinemaHalls on P.CinemaHallID equals CHS.CinemaHallID join CS in principal.Cinemas on CHS.CinemaID equals CS.CinemaID where P.DateTimeStart >= DateTimeFrom && P.DateTimeStart <= DateTimeTo && fltTechTypes.Contains(TT.TechnologyTypeID) && CS.CinemaID == CinemaID group T by T.Projections.Movies into Tgroup orderby Tgroup.Sum(x => x.TicketPrice) descending select new { MovieID = Tgroup.Key.MovieID, Name = Tgroup.Key.Name, Genre = Tgroup.Key.Genres.Name, Director = Tgroup.Key.MovieDirectors.FirstName + " " + Tgroup.Key.MovieDirectors.LastName, Total = Tgroup.Sum(x => x.TicketPrice) }).Take(10). ToDictionary(t => t.MovieID, t => new { t.Name, t.Genre, t.Director, t.Total }); if (profitByMovie.Count == 0) { return(NotFound()); } return(Ok(profitByMovie)); }