12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106 |
- 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 (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
- {
- 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.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 owner = _dbContext.Individuals.Where(x => x.Id == sellItem.OwnerObject.Id).FirstOrDefault();
- var address = _dbContext.Addresses.Where(a => a.Id == sellItem.OwnerObject.Address.Id).FirstOrDefault();
- var banking = _dbContext.BankAccounts.Where(b => b.Id == sellItem.OwnerObject.BankingDetails.Id).FirstOrDefault();
- var status = _dbContext.Status.Where(s => s.Code == "A1" && s.StatusType == StatusType.Timeshare).FirstOrDefault();
- var agent = _dbContext.Agents.Where(ag => ag.Id == sellItem.AgentId).FirstOrDefault();
-
- #region Address
- 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
- if (!sellItem.CustomOwner)
- {
- if (owner == null)
- {
-
- owner = new Model.Users.Individual();
- }
- if (address != null)
- {
- owner.AddressId = address.Id;
- owner.Address = address;
- }
- if (banking != null)
- {
- owner.BankAccount = banking;
- owner.BankAccountId = banking.Id;
- }
- 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
- {
- sellItem.DisplayOwner = sellItem.OwnerObject.Name + " " + sellItem.OwnerObject.Surname;
- }
-
- #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;
- 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 (agent != 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)
- {
- var 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,
- WeekId = week.Id
- };
-
- 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();
- }
- 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();
- }
- }
- }
- }
|