ISPOLNITEL_3_SUHNOSTI
This commit is contained in:
parent
258724652b
commit
bed8ee9b95
@ -16,11 +16,15 @@ namespace TourCompanyContracts.BindingModels
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
public int GidId { get; set; }
|
||||
public string GidFIO { get; set; } = string.Empty;
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string TourName { get; set; } = string.Empty;
|
||||
public int UserId { get; set; }
|
||||
public string UserFIO { get; set; } = string.Empty;
|
||||
|
||||
public Dictionary<int, (ITourModel, decimal)> ExecurtionTours { get; set; } = new();
|
||||
}
|
||||
public int TuorId { get; set; }
|
||||
|
||||
public Dictionary<int, ITourModel> ExecurtionTours { get; set; } = new();
|
||||
public Dictionary<int, IGidModel> ExecurtionGids { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
@ -16,10 +16,12 @@ namespace TourCompanyContracts.BindingModels
|
||||
public int Experion { get; set; }
|
||||
|
||||
public int TripId { get; set; }
|
||||
public string TripName { get; set; } = string.Empty;
|
||||
public Dictionary<int, (ITripModel, string)> GidTrips { get; set; } = new();
|
||||
|
||||
public int UserId { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
public int ExecurtionId { get; set; }
|
||||
}
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> GidExecurtions { get; set; } = new();
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -9,16 +9,18 @@ namespace TourCompanyContracts.BindingModels
|
||||
{
|
||||
public class TourBindingModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int Id { get; set; }
|
||||
|
||||
public string TourName { get; set; } = string.Empty;
|
||||
public string TourName { get; set; } = string.Empty;
|
||||
public int ExecurtionId { get; set; }
|
||||
public int TourGroupId { get; set; }
|
||||
|
||||
public decimal Price { get; set; }
|
||||
public decimal Price { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> ExecurtionTours { get; set; } = new();
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> TourExecurtions { get; set; } = new();
|
||||
|
||||
public Dictionary<ITourGroupModel, decimal> TourGroups { get; set; } = new();
|
||||
}
|
||||
public Dictionary<int, (ITourGroupModel, string)> TourTourGroups { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
@ -15,12 +15,12 @@ namespace TourCompanyContracts.ViewModels
|
||||
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
public int Duration { get; set; }
|
||||
|
||||
public int GidId { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
public int TourId { get; set; }
|
||||
|
||||
public Dictionary<int, (ITourModel, decimal)> ExecurtionTours { get; set; } = new();
|
||||
}
|
||||
public Dictionary<int, ITourModel> ExecurtionTours { get; set; } = new();
|
||||
public Dictionary<int, IGidModel> ExecurtionGids { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
@ -16,10 +16,11 @@ namespace TourCompanyContracts.ViewModels
|
||||
public int Experion { get; set; }
|
||||
|
||||
public int TripId { get; set; }
|
||||
public string TripName { get; set; } = string.Empty;
|
||||
public Dictionary<int, (ITripModel, string)> GidTrips { get; set; } = new();
|
||||
|
||||
public int UserId { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
public int ExecurtionId { get; set; }
|
||||
}
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> GidExecurtions { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
@ -12,13 +12,15 @@ namespace TourCompanyContracts.ViewModels
|
||||
public int Id { get; set; }
|
||||
|
||||
public string TourName { get; set; } = string.Empty;
|
||||
public int ExecurtionId { get; set; }
|
||||
public int TourGroupId { get; set; }
|
||||
|
||||
public decimal Price { get; set; }
|
||||
public decimal Price { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> ExecurtionTours { get; set; } = new();
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> TourExecurtions { get; set; } = new();
|
||||
|
||||
public Dictionary<ITourGroupModel, decimal> TourGroups { get; set; } = new();
|
||||
}
|
||||
public Dictionary<int, (ITourGroupModel, string)> TourTourGroups { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
12
TourCompanyDataModels/Models/GidTrip.cs
Normal file
12
TourCompanyDataModels/Models/GidTrip.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TourCompanyDataModels.Models
|
||||
{
|
||||
internal class GidTrip
|
||||
{
|
||||
}
|
||||
}
|
@ -13,8 +13,6 @@ namespace TourCompanyDataModels.Models
|
||||
|
||||
public DateTime Date { get; }
|
||||
|
||||
public int Duration { get; }
|
||||
|
||||
public int GidId { get; }
|
||||
|
||||
public int UserId { get; }
|
||||
|
@ -9,15 +9,14 @@ namespace TourCompanyDataModels.Models
|
||||
{
|
||||
public interface IGidModel : IId
|
||||
{
|
||||
public string FIO { get;}
|
||||
public string FIO { get;}
|
||||
|
||||
public int Experion { get; }
|
||||
public int Experion { get;}
|
||||
|
||||
public int TripId { get; }
|
||||
public string TripName { get; }
|
||||
public Dictionary<int, (ITripModel, string)> GidTrips { get;}
|
||||
|
||||
public int UserId { get; }
|
||||
public int UserId { get;}
|
||||
|
||||
public int ExecurtionId { get; }
|
||||
}
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> GidExecurtions { get; }
|
||||
}
|
||||
}
|
||||
|
116
TourCompanyDatabaseImplement/Models/Execurtion.cs
Normal file
116
TourCompanyDatabaseImplement/Models/Execurtion.cs
Normal file
@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using TourCompanyContracts.BindingModels;
|
||||
using TourCompanyContracts.ViewModels;
|
||||
using TourCompanyDataModels.Models;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
public class Execurtion : IExecurtionModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Purpose { get; set; } = string.Empty;
|
||||
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
public int GidId { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
public int TourId { get; set; }
|
||||
|
||||
public Dictionary<int, ITourModel>? _execurtionTours = null;
|
||||
public Dictionary<int, IGidModel>? _execurtionGids = null;
|
||||
public virtual List<GidExecurtion> Gids { get; set; } = new();
|
||||
public virtual List<ExecurtionTour> Tours { get; set; } = new();
|
||||
|
||||
public Dictionary<int, IGidModel> ExecurtionGids
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_execurtionGids == null)
|
||||
{
|
||||
_execurtionGids = Gids
|
||||
.ToDictionary(recPC => recPC.GidId, recPC => recPC.Gid as IGidModel);
|
||||
}
|
||||
return _execurtionGids;
|
||||
}
|
||||
}
|
||||
public Dictionary<int, ITourModel> ExecurtionTours
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_execurtionTours == null)
|
||||
{
|
||||
_execurtionTours = Tours
|
||||
.ToDictionary(recPC => recPC.TourId, recPC => recPC.Tour as ITourModel);
|
||||
}
|
||||
return _execurtionTours;
|
||||
}
|
||||
}
|
||||
public static Execurtion Create(TourCompanyDatabase context, ExecurtionBindingModel model)
|
||||
{
|
||||
return new Execurtion()
|
||||
{
|
||||
Id = model.Id,
|
||||
Purpose = model.Purpose,
|
||||
Date = model.Date,
|
||||
UserId = model.UserId,
|
||||
Gids = model.ExecurtionGids.Select(x => new GidExecurtion
|
||||
{
|
||||
Gid = context.Gids.First(y => y.Id == x.Key)
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
public void Update(ExecurtionBindingModel model)
|
||||
{
|
||||
Purpose = model.Purpose;
|
||||
Date = model.Date;
|
||||
}
|
||||
public ExecurtionViewModel GetViewModel
|
||||
{
|
||||
get
|
||||
{
|
||||
using var context = new TourCompanyDatabase();
|
||||
return new ExecurtionViewModel
|
||||
{
|
||||
Id = Id,
|
||||
Purpose = Purpose,
|
||||
Date = Date,
|
||||
UserId = UserId,
|
||||
ExecurtionGids = ExecurtionGids
|
||||
};
|
||||
}
|
||||
}
|
||||
public void UpdateGids(TourCompanyDatabase context, ExecurtionBindingModel model)
|
||||
{
|
||||
var execurtionGids = context.ExecurtionGids.Where(rec => rec.ExecurtionId == model.Id).ToList();
|
||||
if (execurtionGids != null && execurtionGids.dateExecurtion != null)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.ExecurtionGids.RemoveRange(execurtionGids.Where(rec => !model.ExecurtionGids.ContainsKey(rec.GidId)));
|
||||
context.SaveChanges();
|
||||
// обновили количество у существующих записей
|
||||
foreach (var UpdateExecurtion in execurtionGids)
|
||||
{
|
||||
UpdateExecurtion.dateExecurtion = model.ExecurtionGids[UpdateExecurtion.GidId].Item2;
|
||||
model.ExecurtionGids.Remove(UpdateExecurtion.GidId);
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
var execurtion = context.Gids.First(x => x.Id == Id);
|
||||
foreach (var pc in model.ExecurtionGids)
|
||||
{
|
||||
context.ExecurtionGids.Add(new GidExecurtion
|
||||
{
|
||||
Execurtion = execurtion,
|
||||
Gid = context.Gids.First(x => x.Id == pc.Key)
|
||||
});
|
||||
context.SaveChanges();
|
||||
}
|
||||
_execurtionGids = null;
|
||||
}
|
||||
}
|
||||
}
|
24
TourCompanyDatabaseImplement/Models/ExecurtionTour.cs
Normal file
24
TourCompanyDatabaseImplement/Models/ExecurtionTour.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
public class ExecurtionTour
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
public int TourId { get; set; }
|
||||
|
||||
[Required]
|
||||
public int ExecurtionId { get; set; }
|
||||
public DateTime dateExecurtion { get; set; }
|
||||
public virtual Tour Tour { get; set; } = new();
|
||||
|
||||
public virtual Execurtion Execurtion { get; set; } = new();
|
||||
}
|
||||
}
|
101
TourCompanyDatabaseImplement/Models/Gid.cs
Normal file
101
TourCompanyDatabaseImplement/Models/Gid.cs
Normal file
@ -0,0 +1,101 @@
|
||||
using TourCompanyDatabaseImplement.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using TourCompanyContracts.BindingModels;
|
||||
using TourCompanyContracts.ViewModels;
|
||||
using TourCompanyDataModels.Models;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
public class Gid : IGidModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string FIO { get; set; } = string.Empty;
|
||||
|
||||
public int Experion { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)>? _gidExecurtions = null;
|
||||
public virtual List<GidExecurtion> Execurtions { get; set; } = new();
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> GidExecurtions
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_gidExecurtions == null)
|
||||
{
|
||||
_gidExecurtions = Execurtions
|
||||
.ToDictionary(recPC => recPC.ExecurtionId, recPC => (recPC.Execurtion as IExecurtionModel, recPC.dateExecurtion));
|
||||
}
|
||||
return _gidExecurtions;
|
||||
}
|
||||
}
|
||||
public static Gid Create(TourCompanyDatabase context, GidBindingModel model)
|
||||
{
|
||||
return new Gid()
|
||||
{
|
||||
Id = model.Id,
|
||||
FIO = model.FIO,
|
||||
Experion = model.Experion,
|
||||
UserId = model.UserId,
|
||||
Execurtions = model.GidExecurtions.Select(x => new GidExecurtion
|
||||
{
|
||||
Execurtion = context.Execurtions.First(y => y.Id == x.Key),
|
||||
dateExecurtion = x.Value.Item2
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
public void Update(GidBindingModel model)
|
||||
{
|
||||
FIO = model.FIO;
|
||||
Experion = model.Experion;
|
||||
}
|
||||
public GidViewModel GetViewModel
|
||||
{
|
||||
get
|
||||
{
|
||||
using var context = new TourCompanyDatabase();
|
||||
return new GidViewModel
|
||||
{
|
||||
Id = Id,
|
||||
FIO = FIO,
|
||||
Experion = Experion,
|
||||
UserId = UserId,
|
||||
GidExecurtions = GidExecurtions
|
||||
};
|
||||
}
|
||||
}
|
||||
public void UpdateExecurtions(TourCompanyDatabase context, GidBindingModel model)
|
||||
{
|
||||
var gidExecurtions = context.GidExecurtions.Where(rec => rec.GidId == model.Id).ToList();
|
||||
if (gidExecurtions != null && gidExecurtions.dateExecurtion != null)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.GidExecurtions.RemoveRange(gidExecurtions.Where(rec => !model.GidExecurtions.ContainsKey(rec.ExecurtionId)));
|
||||
context.SaveChanges();
|
||||
// обновили количество у существующих записей
|
||||
foreach (var UpdateExecurtion in gidExecurtions)
|
||||
{
|
||||
UpdateExecurtion.dateExecurtion = model.GidExecurtions[UpdateExecurtion.ExecurtionId].Item2;
|
||||
model.GidExecurtions.Remove(UpdateExecurtion.Id);
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
var gid = context.Gids.First(x => x.Id == Id);
|
||||
foreach (var pc in model.GidExecurtions)
|
||||
{
|
||||
context.GidExecurtions.Add(new GidExecurtion
|
||||
{
|
||||
Gid = gid,
|
||||
Execurtion = context.Execurtions.First(x => x.Id == pc.Key),
|
||||
dateExecurtion = pc.Value.Item2
|
||||
});
|
||||
context.SaveChanges();
|
||||
}
|
||||
_gidExecurtions = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
24
TourCompanyDatabaseImplement/Models/GidExecurtion.cs
Normal file
24
TourCompanyDatabaseImplement/Models/GidExecurtion.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
public class GidExecurtion
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
public int GidId { get; set; }
|
||||
|
||||
[Required]
|
||||
public int ExecurtionId { get; set; }
|
||||
public DateTime dateExecurtion { get; set; }
|
||||
public virtual Gid Gid { get; set; } = new();
|
||||
|
||||
public virtual Execurtion Execurtion { get; set; } = new();
|
||||
}
|
||||
}
|
12
TourCompanyDatabaseImplement/Models/PlaceVisit.cs
Normal file
12
TourCompanyDatabaseImplement/Models/PlaceVisit.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
internal class PlaceVisit
|
||||
{
|
||||
}
|
||||
}
|
155
TourCompanyDatabaseImplement/Models/Tour.cs
Normal file
155
TourCompanyDatabaseImplement/Models/Tour.cs
Normal file
@ -0,0 +1,155 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using TourCompanyContracts.BindingModels;
|
||||
using TourCompanyContracts.ViewModels;
|
||||
using TourCompanyDataModels.Models;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
internal class Tour
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string TourName { get; set; } = string.Empty;
|
||||
public int ExecurtionId { get; set; }
|
||||
public int TourGroupId { get; set; }
|
||||
|
||||
public decimal Price { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)>? _tourExecurtions = null;
|
||||
|
||||
public Dictionary<int, (ITourGroupModel, string)>? _tourTourGroups = null;
|
||||
public virtual List<TourGroupTour> TourGroups { get; set; } = new();
|
||||
public virtual List<ExecurtionTour> Execurtions { get; set; } = new();
|
||||
|
||||
public Dictionary<int, (IExecurtionModel, DateTime)> TourExecurtions
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_tourExecurtions == null)
|
||||
{
|
||||
_tourExecurtions = Execurtions
|
||||
.ToDictionary(recPC => recPC.ExecurtionId, recPC => (recPC.Execurtion as IExecurtionModel, recPC.Execurtion.Date));
|
||||
}
|
||||
return _tourExecurtions;
|
||||
}
|
||||
}
|
||||
public Dictionary<int, (ITourGroupModel, string)> TourTourGroups
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_tourTourGroups == null)
|
||||
{
|
||||
_tourTourGroups = TourGroups
|
||||
.ToDictionary(recPC => recPC.TourGroupId, recPC => (recPC.TourGroup as ITourGroupModel, recPC.TourGroup.Number));
|
||||
}
|
||||
return _tourTourGroups;
|
||||
}
|
||||
}
|
||||
public static Tour Create(TourCompanyDatabase context, TourBindingModel model)
|
||||
{
|
||||
return new Tour()
|
||||
{
|
||||
Id = model.Id,
|
||||
TourName = model.TourName,
|
||||
Price = model.Price,
|
||||
UserId = model.UserId,
|
||||
Execurtions = model.TourExecurtions.Select(x => new GidExecurtion
|
||||
{
|
||||
Execurtion = context.Execurtions.First(y => y.Id == x.Key),
|
||||
dateExecurtion = x.Value.Item2
|
||||
}).ToList(),
|
||||
TourGroups = model.TourTourGroups.Select(x => new TourGroupTour
|
||||
{
|
||||
TourGroup = context.TourGroups.First(y => y.Id == x.Key),
|
||||
TourGroupName = x.Value.Item2
|
||||
}).ToList()
|
||||
|
||||
};
|
||||
}
|
||||
public void Update(TourBindingModel model)
|
||||
{
|
||||
TourName = model.TourName;
|
||||
Price = model.Price;
|
||||
}
|
||||
public TourViewModel GetViewModel
|
||||
{
|
||||
get
|
||||
{
|
||||
using var context = new TourCompanyDatabase();
|
||||
return new TourViewModel
|
||||
{
|
||||
Id = Id,
|
||||
TourName = TourName,
|
||||
Price = Price,
|
||||
UserId = UserId,
|
||||
TourExecurtions = TourExecurtions,
|
||||
TourTourGroups = TourTourGroups
|
||||
};
|
||||
}
|
||||
}
|
||||
public void UpdateExecurtions(TourCompanyDatabase context, TourBindingModel model)
|
||||
{
|
||||
var tourExecurtions = context.TourExecurtions.Where(rec => rec.TourId == model.Id).ToList();
|
||||
if (tourExecurtions != null && tourExecurtions.dateExecurtion != null)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.TourExecurtions.RemoveRange(tourExecurtions.Where(rec => !model.TourExecurtions.ContainsKey(rec.ExecurtionId)));
|
||||
context.SaveChanges();
|
||||
// обновили количество у существующих записей
|
||||
foreach (var UpdateExecurtion in tourExecurtions)
|
||||
{
|
||||
UpdateExecurtion.dateExecurtion = model.TourExecurtions[UpdateExecurtion.ExecurtionId].Item2;
|
||||
model.TourExecurtions.Remove(UpdateExecurtion.ExecurtionId);
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
var tour = context.Tours.First(x => x.Id == Id);
|
||||
foreach (var pc in model.TourExecurtions)
|
||||
{
|
||||
context.TourExecurtions.Add(new ExecurtionTour
|
||||
{
|
||||
Tour = tour,
|
||||
Execurtion = context.Execurtions.First(x => x.Id == pc.Key),
|
||||
dateExecurtion = pc.Value.Item2
|
||||
});
|
||||
context.SaveChanges();
|
||||
}
|
||||
_tourExecurtions = null;
|
||||
}
|
||||
public void UpdateTourGroups(TourCompanyDatabase context, TourBindingModel model)
|
||||
{
|
||||
var tourTourGroups = context.TourTourGroups.Where(rec => rec.TourId == model.Id).ToList();
|
||||
if (tourTourGroups != null && tourTourGroups.dateExecurtion != null)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.TourTourGroups.RemoveRange(tourTourGroups.Where(rec => !model.TourTourGroups.ContainsKey(rec.TourGroupId)));
|
||||
context.SaveChanges();
|
||||
// обновили количество у существующих записей
|
||||
foreach (var UpdateTourGroup in tourTourGroups)
|
||||
{
|
||||
UpdateTourGroup.TourGroupName = model.TourTourGroups[UpdateTourGroup.TourGroupId].Item2;
|
||||
model.TourTourGroups.Remove(UpdateTourGroup.TourGroupId);
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
var tour = context.Tours.First(x => x.Id == Id);
|
||||
foreach (var pc in model.TourTourGroups)
|
||||
{
|
||||
context.TourTourGroups.Add(new TourGroupTour
|
||||
{
|
||||
Tour = tour,
|
||||
TourGroup = context.TourGroups.First(x => x.Id == pc.Key),
|
||||
TourGroupName = pc.Value.Item2
|
||||
});
|
||||
context.SaveChanges();
|
||||
}
|
||||
_tourTourGroups = null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
97
TourCompanyDatabaseImplement/Models/TourGroup.cs
Normal file
97
TourCompanyDatabaseImplement/Models/TourGroup.cs
Normal file
@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using TourCompanyDataModels.Enums;
|
||||
using TourCompanyDataModels.Models;
|
||||
using TourCompanyContracts.BindingModels;
|
||||
using TourCompanyContracts.ViewModels;
|
||||
using TourCompanyDataModels.Models;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
internal class TourGroup : ITourGroupModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Number { get; set; } = string.Empty;
|
||||
|
||||
public TourType Type { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
public Dictionary<int, (ITourModel, decimal)>? _tourGroupTours = null;
|
||||
public virtual List<TourGroupTour> Tours { get; set; } = new();
|
||||
public virtual List<User> Users { get; set; } = new();
|
||||
public Dictionary<int, (ITourModel, decimal)> TourGroupTours
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_tourGroupTours == null)
|
||||
{
|
||||
_tourGroupTours = Tours
|
||||
.ToDictionary(recPC => recPC.TourId, recPC => (recPC.Tour as ITourModel, recPC.Price));
|
||||
}
|
||||
return _tourGroupTours;
|
||||
}
|
||||
}
|
||||
public static TourGroup Create(TourCompanyDatabase context, TourGroupBindingModel model)
|
||||
{
|
||||
return new TourGroup()
|
||||
{
|
||||
Id = model.Id,
|
||||
Number = model.Number,
|
||||
Type = model.Type,
|
||||
UserId = model.UserId,
|
||||
Tours = model.TourGroupTours.Select(x => new TourGroupTour{
|
||||
Tour = context.Tours.First(y => y.Id == x.Key),
|
||||
Price = x.Value.Item2
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
public void Update(TourGroupBindingModel model)
|
||||
{
|
||||
Number = model.Number;
|
||||
Type = model.Type;
|
||||
}
|
||||
public TourGroupViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
Number = Number,
|
||||
Type = Type,
|
||||
UserId = UserId,
|
||||
TourGroupTours = TourGroupTours
|
||||
};
|
||||
|
||||
public void UpdateTours(TourCompanyDatabase context, TourGroupBindingModel model)
|
||||
{
|
||||
var tourGroupTours = context.TourGroupTours.Where(rec => rec.TourId == model.Id).ToList();
|
||||
if (tourGroupTours != null && tourGroupTours.Price > 0)
|
||||
{ // удалили те, которых нет в модели
|
||||
context.TourGroupTours.RemoveRange(tourGroupTours.Where(rec => !model.TourGroupTours.ContainsKey(rec.TourId)));
|
||||
context.SaveChanges();
|
||||
// обновили количество у существующих записей
|
||||
foreach (var updateTour in tourGroupTours)
|
||||
{
|
||||
updateTour.Price = model.TourGroupTours[updateTour.TourId].Item2;
|
||||
model.TourGroupTours.Remove(updateTour.TourId);
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
var tourGroup = context.TourGroups.First(x => x.Id == Id);
|
||||
foreach (var pc in model.TourGroupTours)
|
||||
{
|
||||
context.TourGroupTours.Add(new TourGroupTour
|
||||
{
|
||||
TourGroup = tourGroup,
|
||||
Tour = context.Tours.First(x => x.Id == pc.Key),
|
||||
Price = pc.Value.Item2
|
||||
});
|
||||
context.SaveChanges();
|
||||
}
|
||||
_tourGroupTours = null;
|
||||
}
|
||||
}
|
||||
}
|
29
TourCompanyDatabaseImplement/Models/TourGroupTour.cs
Normal file
29
TourCompanyDatabaseImplement/Models/TourGroupTour.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
internal class TourGroupTour
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
public int TourGroupId { get; set; }
|
||||
|
||||
[Required]
|
||||
public int TourId { get; set; }
|
||||
public string TourGroupName { get; set; }
|
||||
|
||||
public decimal Price { get; set; }
|
||||
|
||||
public virtual TourGroup TourGroup { get; set; } = new();
|
||||
|
||||
public virtual Tour Tour { get; set; } = new();
|
||||
|
||||
}
|
||||
}
|
19
TourCompanyDatabaseImplement/Models/User.cs
Normal file
19
TourCompanyDatabaseImplement/Models/User.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TourCompanyDatabaseImplement.Models
|
||||
{
|
||||
internal class User
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string FIO { get; set; } = string.Empty;
|
||||
|
||||
public string Email { get; set; } = string.Empty;
|
||||
|
||||
public string Password { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user