123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212 |
- using Abp.Domain.Entities;
- using Abp.Extensions;
- using Microsoft.CodeAnalysis;
- using Microsoft.EntityFrameworkCore;
- using Newtonsoft.Json;
- using RestSharp;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Dynamic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using UnivateProperties_API.Containers.Timeshare;
- using UnivateProperties_API.Containers.Timeshare.Detailed;
- using UnivateProperties_API.Containers.Users;
- using UnivateProperties_API.Context;
- using UnivateProperties_API.Helpers;
- using UnivateProperties_API.Helpers.Communication;
- using UnivateProperties_API.Model;
- using UnivateProperties_API.Model.Communication;
- using UnivateProperties_API.Model.Region;
- using UnivateProperties_API.Model.Timeshare;
- using UnivateProperties_API.Model.Users;
- using UnivateProperties_API.Repository.Communication;
- using UnivateProperties_API.Repository.Region;
- using UnivateProperties_API.Repository.Users;
-
- namespace UnivateProperties_API.Repository.Timeshare
- {
- public interface IWeekRepository : IRepository<TimeshareWeek>
- {
- int SaveNewWeek(TimeshareWeekDto sellItem);
- void PublishOnly(WeekDto week);
- int IndivWeekCount(int id);
- List<WeekDto> GetAllByResortCode(string resortCode);
- List<dynamic> GetLatest();
- void PublishWeek(int WeekId);
- void UnpublishWeek(int WeekId);
- }
-
- public class WeekRepository : IWeekRepository
- {
- private readonly DataContext _dbContext;
-
- public WeekRepository(DataContext dbContext)
- {
- _dbContext = dbContext;
- }
-
- public List<TimeshareWeek> Get(Func<TimeshareWeek, bool> where)
- {
- return _dbContext.Weeks.Where(where).ToList();
- }
-
- public List<TimeshareWeek> GetAll()
- {
- return _dbContext.Weeks.Include("Owner").ToList();
- }
-
- public TimeshareWeek GetDetailed(Func<TimeshareWeek, bool> first)
- {
- var item = _dbContext.Weeks.FirstOrDefault(first);
- item = GetDetailedWeek(item);
- return item;
- }
-
- public DetailedWeekDto GetMyDetailed(Func<TimeshareWeek, bool> first)
- {
- var item = GetDetailed(first);
- if(item != null)
- {
- return new DetailedWeekDto(item);
- }
- return null;
- }
-
- public List<WeekDto> GetAllByResortCode(string resortCode)
- {
- List<WeekDto> list = new List<WeekDto>();
- string resort;
- resort = TenderWeeksHelper.GetResortCodeById(int.Parse(resortCode));
- foreach (var item in GetDetailedByResortCode(resort))
- {
- list.Add(new WeekDto(item));
- }
-
- var listIds = list.Select(x => x.WeekUni).ToList();
- foreach (var item in GetTenderWeeksByResortCode(resort))
- {
- if (!listIds.Contains(item.WeekUni))
- list.Add(item);
- }
- return list;
- }
-
- private List<TimeshareWeek> GetDetailedByResortCode(string resortCode)
- {
- var list = GetAllUsingResortCode(resortCode);
- List<TimeshareWeek> weeklist = new List<TimeshareWeek>();
- foreach (var item in list)
- {
- weeklist.Add(GetDetailedWeek(item));
- }
- return weeklist;
- }
- private List<TimeshareWeek> GetAllUsingResortCode(string resortCode)
- {
- return _dbContext.Weeks.Where(x => x.ResortCode == resortCode).ToList();
- }
-
- public List<WeekDto> GetDtoListAll()
- {
- List<WeekDto> list = new List<WeekDto>();
- foreach (var item in GetDetailedAll())
- {
- list.Add(new WeekDto(item));
- }
-
- var listIds = list.Select(x => x.WeekUni).ToList();
-
- foreach (var item in GetTenderWeeks())
- {
- if (!listIds.Contains(item.WeekUni))
- list.Add(item);
- }
- return list;
- }
-
- public List<dynamic> GetLatest()
- {
- //List<WeekDto> list = new List<WeekDto>();
- var weeks = _dbContext.Weeks.Where(x => x.Publish == true).OrderByDescending(x => x.Id).Take(4).ToList();
- var client = new RestClient();
- var request = new RestRequest(Method.GET);
- IRestResponse response = client.Execute(request);
- var img = "";
-
- List<dynamic> myWeekList = new List<dynamic>();
- foreach (var week in weeks)
- {
- client = new RestClient(string.Format("https://www.tradeunipoint.com/unibackend/seam/resource/rest/products/{0}/image/{1}", week.ResortCode, 0))
- {
- Timeout = -1
- };
- response = client.Execute(request);
- dynamic myDynamicWeek = new ExpandoObject();
- myDynamicWeek.resortName = week.ResortName;
- myDynamicWeek.module = week.Module;
- myDynamicWeek.season = week.Season;
- myDynamicWeek.levyAmount = week.LevyAmount;
- myDynamicWeek.id = week.Id;
- myDynamicWeek.sellPrice = week.SellPrice;
- myDynamicWeek.resortCode = week.ResortCode;
- myDynamicWeek.image = string.Format("data:image/jpeg;base64,{0}", response.Content);
- myWeekList.Add(myDynamicWeek);
- }
-
- return myWeekList;
- /*foreach (var week in weeks)
- {
- list.Add(new WeekDto(week));
- }
- return list;*/
- }
-
- public int IndivWeekCount(int id)
- {
- var agent = _dbContext.Agents.Where(x => x.UserId == id).Where(y => y.IsDeleted == false).FirstOrDefault();
- var indiv = _dbContext.Individuals.Where(x => x.UserId == id).Where(y => y.IsDeleted == false).FirstOrDefault();
- int count = 0;
- if (agent != null)
- {
- count = _dbContext.Weeks.Where(x => x.AgentId == agent.Id).Count();
- }
- else
- {
- count = _dbContext.Weeks.Where(x => x.OwnerId == indiv.Id).Count();
- }
- return count;
- }
-
- public List<WeekDto> GetMyWeeks(int userId)
- {
- List<WeekDto> list = new List<WeekDto>();
- UserRepository userRepository = new UserRepository(_dbContext);
- var user = userRepository.Get(x => x.Id == userId).FirstOrDefault();
- if (userId == 0)
- {
- foreach (var item in GetDetailedAll())
- {
- if (item.Publish)
- {
- list.Add(new WeekDto(item));
- }
-
- }
- }
- else
- {
- if (user.IsUserInRole(Role.SuperAdmin))
- {
- foreach (var item in GetDetailedAll())
- {
- list.Add(new WeekDto(item));
- }
- }
- else if (user.IsUserInRole(Role.Agency))
- {
- var agent = _dbContext.Agents.FirstOrDefault(x => x.UserId == userId);
- if (agent != null)
- {
- foreach (var item in GetDetailedAll().Where(x => x.AgencyId == agent.AgencyId))
- {
- list.Add(new WeekDto(item));
- }
- }
- }
- else if (user.IsUserInRole(Role.Agent) || user.IsUserInRole(Role.ManagingAgent))
- {
- var agent = _dbContext.Agents.FirstOrDefault(x => x.UserId == userId);
- if (agent != null)
- {
- foreach (var item in GetDetailedAll().Where(x => x.AgentId == agent.Id))
- {
- list.Add(new WeekDto(item));
- }
- }
- }
- else if (user.IsUserInRole(Role.Designer) || user.IsUserInRole(Role.ManagingAgent))
- {
- var _user = _dbContext.Individuals.FirstOrDefault(x => x.UserId == userId);
- if (_user != null)
- {
- foreach (var item in GetDetailedAll())
- {
- list.Add(new WeekDto(item));
- }
- }
- }
- else
- {
- var individual = _dbContext.Individuals.FirstOrDefault(x => x.UserId == userId);
- if (individual != null)
- {
- foreach (var item in GetDetailedAll().Where(x => x.OwnerId == individual.Id))
- {
- list.Add(new WeekDto(item));
- }
- }
- }
- }
-
-
- return list;
- }
-
- public List<RegionDto> GetAvailResort()
- {
- List<RegionDto> list = new List<RegionDto>();
- var allItems = GetDtoListAll();
- foreach (var item in allItems)
- {
- if (item.Region != null)
- {
- if (!list.Any(x => x.RegionCode == item.Region.RegionCode))
- {
- list.Add(new RegionDto(item.Region.RegionCode, item.Region.RegionName));
- }
- foreach (var i in list.Where(x => x.RegionCode == item.Region.RegionCode))
- {
- i.TryAddResort(item.Resort.ResortCode, item.Resort.ResortName);
-
- }
- }
- }
- list = list.OrderBy(x => x.RegionName).ToList();
- foreach (var region in list)
- {
- region.OrderResorts();
- foreach (var resort in region.Resorts)
- {
- resort.Available = allItems.Count(x => x.Resort.ResortCode == resort.ResortCode);
- //resort.ResortId = int.Parse(TenderWeeksHelper.GetResortId(resort.ResortName));
- }
- }
-
- return list;
- }
-
-
-
- public List<TimeshareWeek> GetDetailedAll()
- {
- var list = GetAll();
- List<TimeshareWeek> weeklist = new List<TimeshareWeek>();
- foreach (var item in list)
- {
- weeklist.Add(GetDetailedWeek(item));
- }
- return weeklist;
- }
-
- private TimeshareWeek GetDetailedWeek(TimeshareWeek week)
- {
- if (week.AgencyId != null)
- {
- AgencyRepository agency = new AgencyRepository(_dbContext);
- week.Agency = agency.Get(x => x.Id == week.AgencyId).FirstOrDefault();
- }
- if (week.AgentId != null)
- {
- AgentRepository agent = new AgentRepository(_dbContext);
- week.Agent = agent.Get(x => x.Id == week.AgentId).FirstOrDefault();
- }
- if (week.StatusId != 0)
- {
- StatusRepository status = new StatusRepository(_dbContext);
- week.Status = status.Get(x => x.Id == week.StatusId).FirstOrDefault();
- }
- else
- {
- StatusRepository repo = new StatusRepository(_dbContext);
- week.Status = repo.GetDetailed(s => s.Code == "A1");
- }
- if (week.RegionId != 0)
- {
- ProvinceRepository province = new ProvinceRepository(_dbContext);
- week.Region = province.Get(x => x.Id == week.RegionId).FirstOrDefault();
- }
- if (week.OwnerId != 0)
- {
- IndividualRepository individual = new IndividualRepository(_dbContext);
- week.Owner = individual.Get(x => x.Id == week.OwnerId).FirstOrDefault();
- /*week.DisplayOwner = week.Owner.Name + " " + week.Owner.Surname;
- _dbContext.Weeks.Update(week);
- _dbContext.SaveChanges();*/
- }
- return week;
- }
-
- public void Insert(TimeshareWeek item)
- {
- item = GetDetailedWeek(item);
- StatusRepository repo = new StatusRepository(_dbContext);
- var stat = repo.Get(x => x.Code == "A1" && x.StatusType == StatusType.Timeshare).FirstOrDefault();
- if (stat == null)
- {
- //Create initial
- stat = new Status()
- {
- Code = "A1",
- Description = "Pending verification",
- StatusType = StatusType.Timeshare,
- ModifiedBy = "KobusB"
- };
- repo.Insert(stat);
- }
- //item.Id = NewId();
- item.ProcessFlows.Add(new Model.ProcessFlow.ProcessFlow()
- {
- Status = item.Status,
- Timeshare = item
- });
- TemplateRepository templateRepository = new TemplateRepository(_dbContext);
- if(item.Owner != null)
- {
- var template = _dbContext.Templates.FirstOrDefault(x => x.Name == "WeekLoaded-Owner");
- if(template != null)
- {
- templateRepository.SendEmailTemplate(template, item.Owner, new List<BaseEntity>() { item, item.Owner });
- }
- template = _dbContext.Templates.FirstOrDefault(x => x.Name == "WeekLoaded-UV");
- if(template != null)
- {
- templateRepository.SendEmailTemplate(template, item.Owner, new List<BaseEntity>() { item, item.Owner });
- }
- }
-
- _dbContext.Add(item);
- Save();
- }
-
- public void Insert(IEnumerable<TimeshareWeek> items)
- {
- //int id = NewId();
- foreach (var item in items)
- {
- //item.Id = id;
- _dbContext.Add(item);
- //id += 1;
- }
- Save();
- }
-
- public void Remove(TimeshareWeek item)
- {
- var i = _dbContext.Weeks.Find(item);
- _dbContext.Weeks.Remove(i);
- Save();
- }
-
- public void Remove(IEnumerable<TimeshareWeek> items)
- {
- foreach (var item in items)
- {
- var i = _dbContext.Weeks.Find(item);
- _dbContext.Weeks.Remove(i);
- }
- Save();
- }
-
- public void RemoveAtId(int item)
- {
- var i = _dbContext.Weeks.Find(item);
- _dbContext.Weeks.Remove(i);
- Save();
- }
-
- public void Save()
- {
- _dbContext.SaveChanges();
- }
-
- public void PublishOnly(WeekDto week)
- {
- var saved = _dbContext.Weeks.Where(w => w.Id == week.Id).FirstOrDefault();
-
- if(saved.StatusId != week.Status.Id)
- {
- saved.StatusId = week.Status.Id;
- }
-
- if (saved.Publish != week.Publish)
- {
- saved.Publish = week.Publish;
- }
-
- _dbContext.Update(saved);
- Save();
- }
-
- public void Update(TimeshareWeek item)
- {
- var saved = _dbContext.Weeks.Where(w => w.Id == item.Id).FirstOrDefault();
-
- if (saved.RegionId != item.RegionId)
- {
- saved.RegionId = item.RegionId;
- }
- if (saved.ResortCode != item.ResortCode)
- {
- saved.ResortCode = item.ResortCode;
- }
- if (saved.ResortName != item.ResortName)
- {
- saved.ResortName = item.ResortName;
- }
- if (saved.UnitNumber != item.UnitNumber)
- {
- saved.UnitNumber = item.UnitNumber;
- }
- if (saved.Module != item.Module)
- {
- saved.Module = item.Module;
- }
- if (saved.Season != item.Season)
- {
- saved.Season = item.Season;
- }
- if (saved.Bedrooms != item.Bedrooms)
- {
- saved.Bedrooms = item.Bedrooms;
- }
- if (saved.MaxSleep != item.MaxSleep)
- {
- saved.MaxSleep = item.MaxSleep;
- }
- if (saved.LevyAmount != item.LevyAmount)
- {
- saved.LevyAmount = item.LevyAmount;
- }
- if (saved.WeekType != item.WeekType)
- {
- saved.WeekType = item.WeekType;
- }
- if (saved.ArrivalDate != item.ArrivalDate)
- {
- saved.ArrivalDate = item.ArrivalDate;
- }
- if (saved.DepartureDate != item.DepartureDate)
- {
- saved.DepartureDate = item.DepartureDate;
- }
- if (saved.AskingPrice != item.AskingPrice)
- {
- saved.AskingPrice = item.AskingPrice;
- }
- if (saved.SellPrice != item.SellPrice)
- {
- saved.SellPrice = item.SellPrice;
- }
- if (saved.CurrentYearBanked != item.CurrentYearBanked)
- {
- saved.CurrentYearBanked = item.CurrentYearBanked;
- }
- if (saved.BankedWith != item.BankedWith)
- {
- saved.BankedWith = item.BankedWith;
- }
- if (saved.OwnerId != item.OwnerId)
- {
- saved.OwnerId = item.OwnerId;
- }
-
- if (saved.AgencyId != item.AgencyId)
- {
- saved.AgencyId = item.AgencyId;
- }
-
- if (saved.AgentId != item.AgentId)
- {
- saved.AgentId = item.AgentId;
- }
-
- if (saved.CustomOwner != item.CustomOwner)
- {
- saved.CustomOwner = item.CustomOwner;
- }
-
- if (item.CustomOwner)
- {
- var customOwner = _dbContext.NonRegIndividuals.Where(x => x.WeekId == item.Id).FirstOrDefault();
-
- if (customOwner != null)
- {
- if (item.Owner.Name != customOwner.Name)
- {
- customOwner.Name = item.Owner.Name;
- }
-
- if (item.Owner.Surname != customOwner.Surname)
- {
- customOwner.Surname = item.Owner.Surname;
- }
-
- if (item.Owner.IdNumber != customOwner.IDNumber)
- {
- customOwner.IDNumber = item.Owner.IdNumber;
- }
-
- if (item.Owner.CompanyRegNumber != customOwner.CompanyRegNumber)
- {
- customOwner.CompanyRegNumber = item.Owner.CompanyRegNumber;
- }
-
- if (item.Owner.Email != customOwner.EmailAddress)
- {
- customOwner.EmailAddress = item.Owner.Email;
- }
-
- if (item.Owner.CellNumber != customOwner.CellNumber)
- {
- customOwner.CellNumber = item.Owner.CellNumber;
- }
-
- if (item.Owner.Telephone != customOwner.TelephoneNumber)
- {
- customOwner.TelephoneNumber = item.Owner.Telephone;
- }
- saved.DisplayOwner = item.Owner.Name + " " + item.Owner.Surname;
- _dbContext.NonRegIndividuals.Update(customOwner);
- _dbContext.SaveChanges();
- }
- else
- {
- var nonRegUserObj = new NonRegIndividual
- {
- Name = item.Owner.Name,
- Surname = item.Owner.Surname,
- IDNumber = item.Owner.IdNumber,
- CompanyRegNumber = item.Owner.CompanyRegNumber,
- EmailAddress = item.Owner.Email,
- CellNumber = item.Owner.CellNumber,
- TelephoneNumber = item.Owner.Telephone,
- WeekId = item.Id
- };
- _dbContext.NonRegIndividuals.Add(nonRegUserObj);
- _dbContext.SaveChanges();
-
-
- saved.DisplayOwner = item.Owner.Name + " " + item.Owner.Surname;
- }
-
- }
- else
- {
- if (saved.DisplayOwner != item.Owner.Name + " " + item.Owner.Surname)
- {
- saved.DisplayOwner = item.Owner.Name + " " + item.Owner.Surname;
- }
- }
-
- /*var owner = _dbContext.Individuals.Where(x => x.Id == item.OwnerId).FirstOrDefault();
-
- if (owner.Name != item.Owner.Name)
- {
- owner.Name = item.Owner.Name;
- }
- if (owner.Surname != item.Owner.Surname)
- {
- owner.Surname = item.Owner.Surname;
- }
- if (owner.IdNumber != item.Owner.IdNumber)
- {
- owner.IdNumber = item.Owner.IdNumber;
- }
- if (owner.CompanyRegNumber != item.Owner.CompanyRegNumber)
- {
- owner.CompanyRegNumber = item.Owner.CompanyRegNumber;
- }
- if (owner.Email != item.Owner.Email)
- {
- owner.Email = item.Owner.Email;
- }
- if (owner.CellNumber != item.Owner.CellNumber)
- {
- owner.CellNumber = item.Owner.CellNumber;
- }
- if (owner.Telephone != item.Owner.Telephone)
- {
- owner.Telephone = item.Owner.Telephone;
- }*/
-
-
- if (saved.Mandate != item.Mandate)
- {
- if (item.Mandate)
- saved.DateMandated = DateTime.Now;
- }
-
- if (item.Status != null)
- {
- if (saved.StatusId != item.Status.Id)
- {
- saved.StatusId = item.Status.Id;
- }
- }
- else
- {
- var status = _dbContext.Status.Where(x => x.Id == item.StatusId).FirstOrDefault();
- saved.Status = status;
- saved.StatusId = item.StatusId;
- }
-
-
- if (saved.Publish != item.Publish)
- {
- saved.Publish = item.Publish;
- }
- if (saved.PulbishedDate != item.PulbishedDate)
- {
- saved.PulbishedDate = item.PulbishedDate;
- }
- _dbContext.Entry(saved).State = EntityState.Modified;
- Save();
- }
-
- public List<TimeshareWeek> GetBy(WeekFilterDto week)
- {
- List<TimeshareWeek> item = GetDetailedAll();
- if (!string.IsNullOrEmpty(week.RegionCode))
- {
- item = item.Where(x => x.Region != null && x.Region.Code?.ToLower() == week.RegionCode.ToLower()).ToList();
- }
- if (!string.IsNullOrEmpty(week.ResortCode))
- {
- item = item.Where(x => x.ResortCode?.ToLower() == week.ResortCode).ToList();
- }
- if (week.Date != null)
- {
- item = item.Where(x =>
- x.ArrivalDate >= week.Date.Value.AddDays(-7)
- && x.DepartureDate <= week.Date.Value.AddDays(7)).ToList();
- }
- if (week.MinAmount != null && week.MinAmount != 0)
- {
- item = item.Where(x => x.SellPrice >= week.MinAmount).ToList();
- }
- if (week.MaxAmount != null && week.MaxAmount != 0)
- {
- item.Where(x => x.SellPrice <= week.MaxAmount).ToList();
- }
- return item;
- }
-
- //public int NewId()
- //{
- // int id = 0;
- // if (_dbContext.Weeks.Count() > 0)
- // {
- // id = _dbContext.Weeks.Max(x => x.Id);
- // }
- // id += 1;
- // return id;
- //}
-
- private int _TenderId = 10000;
- private int GetTenderId()
- {
- return _TenderId++;
- }
-
- public List<WeekDto> GetTenderWeeks()
- {
- List<WeekDto> list = new List<WeekDto>();
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(MyCommon.TenderUrl);
- request.Method = "GET";
- WebResponse response = request.GetResponse();
- using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
- {
- string result = reader.ReadToEnd();
- result = result.Replace("\n", "").Trim();
- if (result != "Resort Error")
- {
- if (result.Length > 0)
- {
- string cleanLine;
- string[] lines = result.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
- foreach (string line in lines)
- {
- cleanLine = line.Replace("<br>", "");
- cleanLine = cleanLine.Replace("<br >", "");
- cleanLine = cleanLine.Replace("<br/>", "");
- cleanLine = cleanLine.Replace("<br />", "");
- list.Add(new WeekDto(GetTenderId(), cleanLine));
- }
- }
- }
- }
- // Check that all regions are same as other
- list
- .Where(x => x.Region != null && x.Region.RegionCode == "FN")
- .ToList()
- .ForEach(x => x.Region.RegionCode = ChangeRegion(x.Region.RegionCode));
- list = GetRegion(list);
- return list;
- }
-
- public List<WeekDto> GetTenderWeeksByResortCode(string resortCode)
- {
- List<WeekDto> list = new List<WeekDto>();
- string conString = string.Format("http://www.unipoint-consoft.co.za/nph-srep.exe?cluvavail.sch&CLUB=LPA&RESORT={0}&SUMMARY=N&HEAD=N", resortCode);
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(conString);
- request.Method = "GET";
- WebResponse response = request.GetResponse();
- using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
- {
- string result = reader.ReadToEnd();
- result = result.Replace("\n", "").Trim();
- if (result != "Resort Error")
- {
- if (result.Length > 0)
- {
- string cleanLine;
- string[] lines = result.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
- if (lines[0].Trim() != "none")
- {
- foreach (string line in lines)
- {
- cleanLine = line.Replace("<br>", "");
- cleanLine = cleanLine.Replace("<br >", "");
- cleanLine = cleanLine.Replace("<br/>", "");
- cleanLine = cleanLine.Replace("<br />", "");
- list.Add(new WeekDto(GetTenderId(), cleanLine));
- }
- }
-
- }
- }
- }
- // Check that all regions are same as other
- list
- .Where(x => x.Region != null && x.Region.RegionCode == "FN")
- .ToList()
- .ForEach(x => x.Region.RegionCode = ChangeRegion(x.Region.RegionCode));
- list = GetRegion(list);
- return list;
- }
-
- private List<WeekDto> GetRegion(List<WeekDto> list)
- {
- ProvinceRepository province = new ProvinceRepository(_dbContext);
- Province prov = null;
- foreach(var item in list)
- {
- prov = province.GetDetailed(x => x.Code == item.Region.RegionCode);
- if(prov != null)
- {
- item.Region = new RegionDto(prov.Id, prov.Code, prov.Description);
- }
- }
- return list;
- }
-
- private string ChangeRegion(string value)
- {
- switch(value)
- {
- case "FN":
- return "KZN";
- case "L":
- return "LI";
- default:
- return value;
- }
- }
-
- public List<DetailedWeekDto> GetNeedApproval()
- {
- List<DetailedWeekDto> detList = new List<DetailedWeekDto>();
- var status = _dbContext.Status.FirstOrDefault(x => x.Code == "A1" && x.StatusType == StatusType.Timeshare);
- if(status != null)
- {
- var list = GetDetailedAll().Where(x => x.Status != null && x.Status.Id == status.Id).ToList();
- list.ForEach(x => detList.Add(new DetailedWeekDto(x)));
- }
- return detList;
- }
-
- public void VerifyWeek(int id)
- {
- var week = _dbContext.Weeks.FirstOrDefault(x => x.Id == id);
- var newStatus = _dbContext.Status.FirstOrDefault(x => x.Code.ToLower() == "a2" && x.StatusType == StatusType.Timeshare);
- if(week != null && newStatus != null)
- {
- week = GetDetailedWeek(week);
- week.Status = newStatus;
- Update(week);
- var template = _dbContext.Templates.Where(x => x.Name == "WeekAuthorized").FirstOrDefault();
- if(template != null)
- {
-
- TemplateRepository tempRepo = new TemplateRepository(_dbContext);
- tempRepo.SendEmailTemplate(template, week.Owner, new List<BaseEntity>() { week, week.Owner, week.Owner.User});
- }
- }
- }
-
- public void PublishWeek(int id)
- {
- var week = _dbContext.Weeks.FirstOrDefault(x => x.Id == id);
- if (week != null)
- {
- week.Publish = true;
- week.PulbishedDate = DateTime.Now;
- _dbContext.Entry(week).State = EntityState.Modified;
- Save();
- }
- }
-
- public int SaveNewWeek(TimeshareWeekDto sellItem)
- {
-
-
- //var banking = _dbContext.BankAccounts.Where(b => b.Id == sellItem.OwnerObject.BankingDetails.Id).FirstOrDefault();
- var status = _dbContext.Status.Where(s => s.Id == sellItem.StatusId && s.StatusType == StatusType.Timeshare).FirstOrDefault();
-
- if (sellItem.AgentId != null)
- {
- var agent = _dbContext.Agents.Where(ag => ag.Id == sellItem.AgentId).FirstOrDefault();
- }
-
-
- #region Address - Check if the user has an address, if not and a new address has been posted it can be updated
- var address = new Model.Misc.Address();
- if (sellItem.OwnerObject.Address != null)
- {
- address = _dbContext.Addresses.Where(a => a.Id == sellItem.OwnerObject.Address.Id).FirstOrDefault();
- }
-
- if (sellItem.OwnerObject.Address.PostalCode != "")
- {
- if (address == null)
- {
- address = new Model.Misc.Address();
- }
- address.StreetNumber = sellItem.OwnerObject.Address.StreetNumber;
- address.Street = sellItem.OwnerObject.Address.Street;
- address.Suburb = sellItem.OwnerObject.Address.Suburb;
- address.City = sellItem.OwnerObject.Address.City;
- address.Province = sellItem.OwnerObject.Address.Province;
- address.PostalCode = sellItem.OwnerObject.Address.PostalCode;
-
- if (address.Id == 0)
- {
- _dbContext.Add(address);
- Save();
- }
- else
- {
- _dbContext.Entry(address).State = EntityState.Modified;
- Save();
- }
- }
- #endregion
-
-
-
- //#region Banking
- //if (sellItem.OwnerObject.BankingDetails.AccountHolder != "")
- //{
- // if (banking == null)
- // {
- // banking = new Model.Banks.BankAccount();
- // }
- // banking.AccountHolder = sellItem.OwnerObject.BankingDetails.AccountHolder;
- // banking.AccountNumber = sellItem.OwnerObject.BankingDetails.AccountNumber;
- // banking.BankId = sellItem.OwnerObject.BankingDetails.Bank.Id;
-
- // if (banking.Id == 0)
- // {
- // _dbContext.Add(banking);
- // Save();
- // }
- // else
- // {
- // _dbContext.Entry(banking).State = EntityState.Modified;
- // Save();
- // }
- //}
- //#endregion
-
- #region Owner
- //Check if an agent has listed the week.
- var agentWeek = _dbContext.Agents.Where(x => x.UserId == sellItem.OwnerId && !x.IsDeleted).FirstOrDefault();
- var owner = new Model.Users.Individual();
- var indiv = new NonRegIndividual();
-
- //Check if agentWeek is null. If null get an owner that listed the week
- if (agentWeek == null)
- {
- owner = _dbContext.Individuals.Where(x => x.UserId == sellItem.OwnerId).FirstOrDefault();
- }
-
- if (sellItem.CustomOwner)
- {
- sellItem.DisplayOwner = sellItem.OwnerObject.Name + " " + sellItem.OwnerObject.Surname;
- indiv = new NonRegIndividual()
- {
- Name = sellItem.OwnerObject.Name,
- Surname = sellItem.OwnerObject.Surname,
- IDNumber = sellItem.OwnerObject.IdNumber,
- CompanyRegNumber = sellItem.OwnerObject.CompanyRegNumber,
- EmailAddress = sellItem.OwnerObject.EmailAddress,
- CellNumber = sellItem.OwnerObject.CellNumber,
- TelephoneNumber = sellItem.OwnerObject.LandlineNumber,
- SpouseCellnumber = sellItem.OwnerObject.SpouseCellnumber,
- SpouseEmail = sellItem.OwnerObject.SpouseEmail,
- SpouseName = sellItem.OwnerObject.SpouseName,
- SpouseSurname = sellItem.OwnerObject.SpouseSurname,
- SpouseTelephone = sellItem.OwnerObject.SpouseSurname,
- };
-
- switch (sellItem.OwnerObject.MaritalStatus?.ToUpper())
- {
- case "":
- indiv.HowMarried = MarriedType.NotApplicable;
- break;
- case "N/A":
- indiv.HowMarried = MarriedType.NotApplicable;
- break;
- case "IN COMMUNITY OF PROPERTY":
- indiv.HowMarried = MarriedType.ICOP;
- break;
- case "OUT OF COMMUNITY OF PROPERTY":
- indiv.HowMarried = MarriedType.OCOP;
- break;
- case "OTHER":
- indiv.HowMarried = MarriedType.Other;
- break;
- case "TRADITIONAL WEDDING":
- indiv.HowMarried = MarriedType.Traditional;
- break;
- case "SINGLE":
- indiv.HowMarried = MarriedType.Single;
- break;
- case "DIVORCED":
- indiv.HowMarried = MarriedType.Divorced;
- break;
- case "WIDOW":
- indiv.HowMarried = MarriedType.Widow;
- break;
- case "COMMITTED RELATIONSHIP":
- indiv.HowMarried = MarriedType.CommittedRelationship;
- break;
- case "PARTNER":
- indiv.HowMarried = MarriedType.Partner;
- break;
- default:
- indiv.HowMarried = MarriedType.NotApplicable;
- break;
- }
- _dbContext.NonRegIndividuals.Add(indiv);
- _dbContext.SaveChanges();
- }
- else
- {
- if (owner == null)
- {
- owner = new Model.Users.Individual();
- }
-
- if (address != null)
- {
- owner.AddressId = address.Id;
- owner.Address = address;
- }
-
- if (agentWeek == null)
- {
- owner.Name = sellItem.OwnerObject.Name;
- owner.Surname = sellItem.OwnerObject.Surname;
- owner.IdNumber = sellItem.OwnerObject.IdNumber;
- owner.CompanyRegNumber = sellItem.OwnerObject.CompanyRegNumber;
- owner.Email = sellItem.OwnerObject.EmailAddress;
- owner.CellNumber = sellItem.OwnerObject.CellNumber;
- owner.Telephone = sellItem.OwnerObject.LandlineNumber;
- sellItem.DisplayOwner = owner.Name + " " + owner.Surname;
-
- switch (sellItem.OwnerObject.MaritalStatus?.ToUpper())
- {
- case "N/A":
- owner.HowMarried = MarriedType.NotApplicable;
- break;
- case "IN COMMUNITY OF PROPERTY":
- owner.HowMarried = MarriedType.ICOP;
- break;
- case "OUT OF COMMUNITY OF PROPERTY":
- owner.HowMarried = MarriedType.OCOP;
- break;
- case "OTHER":
- owner.HowMarried = MarriedType.Other;
- break;
- case "TRADITIONAL WEDDING":
- owner.HowMarried = MarriedType.Traditional;
- break;
- case "SINGLE":
- owner.HowMarried = MarriedType.Single;
- break;
- case "DIVORCED":
- owner.HowMarried = MarriedType.Divorced;
- break;
- case "WIDOW":
- owner.HowMarried = MarriedType.Widow;
- break;
- case "COMMITTED RELATIONSHIP":
- owner.HowMarried = MarriedType.CommittedRelationship;
- break;
- case "PARTNER":
- owner.HowMarried = MarriedType.Partner;
- break;
- default:
- owner.HowMarried = MarriedType.NotApplicable;
- break;
- }
-
- owner.SpouseCellnumber = sellItem.OwnerObject.SpouseCellnumber;
- owner.SpouseEmail = sellItem.OwnerObject.SpouseEmail;
- owner.SpouseName = sellItem.OwnerObject.SpouseName;
- owner.SpouseSurname = sellItem.OwnerObject.SpouseSurname;
- owner.SpouseTelephone = sellItem.OwnerObject.SpouseSurname;
-
- if (owner.Id == 0)
- {
- _dbContext.Add(owner);
- Save();
- }
- else
- {
- _dbContext.Entry(owner).State = EntityState.Modified;
- Save();
- }
- }
- else
- {
- agentWeek.Name = sellItem.OwnerObject.Name;
- agentWeek.Surname = sellItem.OwnerObject.Surname;
- agentWeek.Email = sellItem.OwnerObject.EmailAddress;
- agentWeek.CellNumber = sellItem.OwnerObject.CellNumber;
- agentWeek.Telephone = sellItem.OwnerObject.LandlineNumber;
- sellItem.DisplayOwner = agentWeek.Name + " " + agentWeek.Surname;
-
- if (agentWeek.Id == 0)
- {
- _dbContext.Add(agentWeek);
- Save();
- }
- else
- {
- _dbContext.Entry(agentWeek).State = EntityState.Modified;
- Save();
- }
- }
- }
- #endregion
-
- var week = new TimeshareWeek();
-
- try
- {
- foreach (string prop in week.GetAllProperties())
- {
- if (prop != "Item" && prop != "Display")
- week[prop] = sellItem[prop];
- }
- week.Region = null;
- week.RegionId = sellItem.Region.Id;
-
- //if agentWeek then set week owner equal to agentWeek.id else
- if (agentWeek != null)
- {
- week.OwnerId = agentWeek.Id;
- }
- else
- {
- week.OwnerId = owner.Id;
- }
-
- if (week.Mandate)
- week.DateMandated = DateTime.Now;
-
- TemplateRepository templateRepository = new TemplateRepository(_dbContext);
- MailRepository mailRepository = new MailRepository(_dbContext);
- var template = _dbContext.Templates.FirstOrDefault(x => x.Name == "WeekLoaded-Owner");
-
- try
- {
- if (agentWeek != null)
- {
- template = _dbContext.Templates.FirstOrDefault(x => x.Name == "WeekLoaded-Agent");
- if (template != null)
- {
- mailRepository.WeekLoadedAgent(sellItem);
- //templateRepository.SendEmailTemplateWeek(template, agent, sellItem);
- }
- }
- else
- {
- if (template != null)
- {
- mailRepository.WeekLoadedOwner(sellItem);
- //templateRepository.SendEmailTemplateWeek(template, owner, sellItem);
- }
- /*template = _dbContext.Templates.FirstOrDefault(x => x.Name == "WeekLoaded-UV");
- if (template != null)
- {
- templateRepository.SendEmailTemplate(template, sellItem.Owner, new List<BaseEntity>() { sellItem, sellItem.Owner });
- }*/
-
- }
- }
- catch (Exception ex)
- {
- MailModel mm = new MailModel();
- mm.ComType = "WeekLoad";
- mm.Error = ex.ToString();
- _dbContext.CommunicationLog.Add(mm);
- }
-
- if (sellItem.StatusId == 0)
- {
- var statuses = _dbContext.Status.ToList();
- foreach (var statusItem in statuses)
- {
- if (statusItem.Code == "AP")
- {
- week.StatusId = statusItem.Id;
- }
- }
- }
-
- _dbContext.Add(week);
- Save();
- if (sellItem.CustomOwner)
- {
- indiv.WeekId = week.Id;
- _dbContext.NonRegIndividuals.Update(indiv);
- Save();
- }
- }
- catch (Exception ex)
- {
- throw (ex);
- }
- return week.Id;
- }
-
- public void UnpublishWeek(int WeekId)
- {
- var week = _dbContext.Weeks.FirstOrDefault(x => x.Id == WeekId);
- if (week != null)
- {
- week.Publish = false;
- week.PulbishedDate = DateTime.MinValue;
- _dbContext.Entry(week).State = EntityState.Modified;
- Save();
- }
- }
- }
- }
|