1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189 |
- using Abp.Domain.Entities;
- using Abp.Extensions;
- using Microsoft.CodeAnalysis;
- using Microsoft.EntityFrameworkCore;
- 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>();
- foreach (var item in GetDetailedByResortCode(resortCode))
- {
- list.Add(new WeekDto(item));
- }
-
- var listIds = list.Select(x => x.WeekUni).ToList();
-
- foreach (var item in GetTenderWeeksByResortCode(resortCode))
- {
- 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);
- }
- }
- 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();
-
- 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();
-
- 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();
- 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)
- {
- throw (ex);
- }
-
- 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();
- }
- 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();
- }
- }
- }
- }
|